diff --git a/app/Http/Controllers/IdiomQuizController.php b/app/Http/Controllers/IdiomQuizController.php
index 5f3c2b6..b80f4be 100644
--- a/app/Http/Controllers/IdiomQuizController.php
+++ b/app/Http/Controllers/IdiomQuizController.php
@@ -197,7 +197,7 @@ class IdiomQuizController extends Controller
$user->save();
}
- // 广播结果
+ // 广播结果(前端通过 IdiomGameAnswered 事件做分屏显示)
broadcast(new IdiomGameAnswered(
roomId: $roomId,
roundId: $round->id,
@@ -207,7 +207,7 @@ class IdiomQuizController extends Controller
rewardExp: $round->reward_exp,
));
- // 推 MessageSent 系统通知
+ // 存聊天记录(不广播,避免重复显示)
$resultMsg = [
'id' => $this->chatState->nextMessageId($roomId),
'room_id' => $roomId,
@@ -220,7 +220,6 @@ class IdiomQuizController extends Controller
'sent_at' => now()->toDateTimeString(),
];
$this->chatState->pushMessage($roomId, $resultMsg);
- broadcast(new \App\Events\MessageSent($roomId, $resultMsg));
\Illuminate\Support\Facades\Redis::del($lockKey);
diff --git a/resources/js/chat-room/idiom-quiz.js b/resources/js/chat-room/idiom-quiz.js
index b8dd3f2..97d7949 100644
--- a/resources/js/chat-room/idiom-quiz.js
+++ b/resources/js/chat-room/idiom-quiz.js
@@ -38,7 +38,9 @@ function handleIdiomGameAnswered(e) {
answerModal.style.display = "none";
}
- // ── 全局文字提示:在聊天窗口中追加结果消息 ──
+ // ── 分屏文字提示 ──
+ // 回答者 → 包厢(chat-messages-container2)
+ // 其他人 → 公屏(chat-messages-container)
const now = new Date();
const timeStr = now.getHours().toString().padStart(2, "0") + ":" +
now.getMinutes().toString().padStart(2, "0") + ":" +
@@ -48,13 +50,24 @@ function handleIdiomGameAnswered(e) {
div.className = "msg-line";
div.innerHTML = `🎉 恭喜 ${winner_username} 率先答对成语「${answer}」,获得 ${reward_gold} 金币、${reward_exp} 经验!(${timeStr})`;
- const say1 = document.getElementById("chat-messages-container");
- if (say1) {
- say1.appendChild(div);
- say1.scrollTop = say1.scrollHeight;
+ const isWinner = winner_username === (window.chatContext?.username || "");
+ if (isWinner) {
+ // 回答者 → 包厢
+ const say2 = document.getElementById("chat-messages-container2");
+ if (say2) {
+ say2.appendChild(div.cloneNode(true));
+ say2.scrollTop = say2.scrollHeight;
+ }
+ } else {
+ // 其他人 → 公屏
+ const say1 = document.getElementById("chat-messages-container");
+ if (say1) {
+ say1.appendChild(div);
+ say1.scrollTop = say1.scrollHeight;
+ }
}
- // ── Toast 通知(所有在线用户都能看到) ──
+ // ── Toast 通知(所有用户都能看到) ──
window.chatToast?.show({
title: "🧩 猜成语",
message: `${winner_username} 答对了「${answer}」,获得 ${reward_gold}💰 + ${reward_exp}⭐!`,