修复:聊天室初次加载时附带历史消息,解决因网络延迟错失入场欢迎语的问题
This commit is contained in:
@@ -122,14 +122,16 @@ class ChatController extends Controller
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 5. 获取历史消息用于初次渲染
|
// 5. 获取历史消息用于初次渲染
|
||||||
// TODO: 可在前端通过请求另外的接口拉取历史记录,或者直接在这里 attach
|
// 获取最近的所有消息(由于 Redis list 已限制保留条数,传 0 为拉取所有缓存的记录)
|
||||||
|
$historyMessages = $this->chatState->getNewMessages($id, 0);
|
||||||
|
|
||||||
// 渲染主聊天框架视图
|
// 渲染主聊天框架视图
|
||||||
return view('chat.frame', [
|
return view('chat.frame', [
|
||||||
'room' => $room,
|
'room' => $room,
|
||||||
'user' => $user,
|
'user' => $user,
|
||||||
'weekEffect' => $this->shopService->getActiveWeekEffect($user), // 周卡特效(登录自动播放)
|
'weekEffect' => $this->shopService->getActiveWeekEffect($user), // 周卡特效(登录自动播放)
|
||||||
'newbieEffect' => $newbieEffect, // 新人入场专属特效
|
'newbieEffect' => $newbieEffect, // 新人入场专属特效
|
||||||
|
'historyMessages' => $historyMessages, // 把历史消息附带给前端
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -103,6 +103,22 @@
|
|||||||
|
|
||||||
@include('chat.partials.scripts')
|
@include('chat.partials.scripts')
|
||||||
|
|
||||||
|
{{-- 页面初始加载时,渲染自带的历史记录(解决入场欢迎语错过断网的问题) --}}
|
||||||
|
@if (!empty($historyMessages))
|
||||||
|
<script>
|
||||||
|
document.addEventListener('DOMContentLoaded', () => {
|
||||||
|
const historyMsgs = @json($historyMessages);
|
||||||
|
if (historyMsgs && historyMsgs.length > 0) {
|
||||||
|
// 全局函数 appendMessage 在 scripts.blade.php 中定义
|
||||||
|
historyMsgs.forEach(msg => {
|
||||||
|
if (typeof window.appendMessage === 'function') {
|
||||||
|
window.appendMessage(msg);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
@endif
|
||||||
{{-- 进房特效自动播放:新人烟花礼包 / 周卡特效 --}}
|
{{-- 进房特效自动播放:新人烟花礼包 / 周卡特效 --}}
|
||||||
@if (!empty($newbieEffect) || !empty($weekEffect))
|
@if (!empty($newbieEffect) || !empty($weekEffect))
|
||||||
<script>
|
<script>
|
||||||
|
|||||||
Reference in New Issue
Block a user