From fa86876ab543010252e41c01970946b6a24bb445 Mon Sep 17 00:00:00 2001 From: hechang27-sprt Date: Wed, 7 Jan 2026 16:03:03 +0800 Subject: [PATCH] fix: add a simple message queue to ws --- plugs/websocket.ts | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/plugs/websocket.ts b/plugs/websocket.ts index fb985f0..dea9f6f 100644 --- a/plugs/websocket.ts +++ b/plugs/websocket.ts @@ -2,6 +2,7 @@ let websocket: WebSocket; const msgHandlersMap = {}; let lastUrl; let closeFlag = false; +const messageQueue: any[] = []; export const closeWebSocket = () => { closeFlag = false; @@ -9,7 +10,11 @@ export const closeWebSocket = () => { }; export const sendSocketMsg = (msg) => { - websocket?.send(JSON.stringify(msg)); + if (websocket && websocket.readyState === WebSocket.OPEN) { + websocket.send(JSON.stringify(msg)); + } else { + messageQueue.push(msg); + } }; export const openWebSocket = (url) => { @@ -24,6 +29,11 @@ export const openWebSocket = (url) => { websocket.onopen = () => { console.log("websocket已连接"); closeFlag = true; + // Send any queued messages + while (messageQueue.length > 0) { + const msg = messageQueue.shift(); + websocket.send(JSON.stringify(msg)); + } }; websocket.onmessage = (msg) => { const event = JSON.parse(msg.data);