fix(chat): 修复重连后对话状态丢失导致消息发送失败的问题

在 WebSocket 重连场景下,服务端可能丢失 `conversationId` 状态,导致后续消息发送被拒绝。通过在客户端消息中携带 `conversationId`,并在服务端添加 fallback 恢复逻辑,确保重连后仍能正常发送消息。

同时优化了 `pendingMessage` 类型定义,支持存储待发送的图片附件,修复了延迟发送场景下图片丢失的问题。
This commit is contained in:
2026-05-08 03:15:21 +08:00
parent 7440ade66d
commit 5087d77f23
4 changed files with 13 additions and 8 deletions

View File

@@ -30,6 +30,10 @@ export function handleChat(ws: WebSocket) {
}
if (msg.type === 'chat') {
// Fallback: use conversationId from message if server state lost (e.g. after reconnect)
if (!conversationId && msg.conversationId) {
conversationId = msg.conversationId as string;
}
if (!conversationId) {
ws.send(JSON.stringify({ type: 'error', data: { message: '没有活跃对话,请先创建或选择一个对话' } }));
return;