diff --git a/jeecgboot-vue3/src/hooks/web/useWebSocket.ts b/jeecgboot-vue3/src/hooks/web/useWebSocket.ts index d98ff7da..4b065cac 100644 --- a/jeecgboot-vue3/src/hooks/web/useWebSocket.ts +++ b/jeecgboot-vue3/src/hooks/web/useWebSocket.ts @@ -13,35 +13,69 @@ const listeners = new Map(); */ export function connectWebSocket(url: string) { //update-begin-author:taoyan date:2022-4-24 for: v2.4.6 的 websocket 服务端,存在性能和安全问题。 #3278 - let token = (getToken() || '') as string; + const token = (getToken() || '') as string; result = useWebSocket(url, { // 自动重连 (遇到错误最多重复连接10次) autoReconnect: { - retries : 10, - delay : 5000 + retries: 10, + delay: 5000, }, // 心跳检测 heartbeat: { - message: "ping", - interval: 55000 + message: 'ping', + // 如果服务器压力再改回来55秒 + interval: 5000, }, protocols: [token], + // update-begin--author:liaozhiyang---date:20240726---for:[issues/6662] 演示系统socket总断,换一个写法 + onConnected: function (ws) { + console.log('[WebSocket] 连接成功', ws); + }, + onDisconnected: function (ws, event) { + console.log('[WebSocket] 连接断开:', ws, event); + }, + onError: function (ws, event) { + console.log('[WebSocket] 连接发生错误: ', ws, event); + }, + onMessage: function (_ws, e) { + console.debug('[WebSocket] -----接收消息-------', e.data); + try { + //update-begin---author:wangshuai---date:2024-05-07---for:【issues/1161】前端websocket因心跳导致监听不起作用--- + if (e.data === 'ping') { + return; + } + //update-end---author:wangshuai---date:2024-05-07---for:【issues/1161】前端websocket因心跳导致监听不起作用--- + const data = JSON.parse(e.data); + for (const callback of listeners.keys()) { + try { + callback(data); + } catch (err) { + console.error(err); + } + } + } catch (err) { + console.error('[WebSocket] data解析失败:', err); + } + }, + // update-end--author:liaozhiyang---date:20240726---for:[issues/6662] 演示系统socket总断,换一个写法 }); + // update-begin--author:liaozhiyang---date:20240726---for:[issues/6662] 演示系统socket总断,换一个写法 //update-end-author:taoyan date:2022-4-24 for: v2.4.6 的 websocket 服务端,存在性能和安全问题。 #3278 - if (result) { - result.open = onOpen; - result.close = onClose; + // if (result) { + // result.open = onOpen; + // result.close = onClose; - const ws = unref(result.ws); - if(ws!=null){ - ws.onerror = onError; - ws.onmessage = onMessage; - //update-begin---author:wangshuai---date:2024-04-30---for:【issues/1217】发送测试消息后,铃铛数字没有变化--- - ws.onopen = onOpen; - ws.onclose = onClose; - //update-end---author:wangshuai---date:2024-04-30---for:【issues/1217】发送测试消息后,铃铛数字没有变化--- - } - } + // const ws = unref(result.ws); + // if(ws!=null){ + // ws.onerror = onError; + // ws.onmessage = onMessage; + // //update-begin---author:wangshuai---date:2024-04-30---for:【issues/1217】发送测试消息后,铃铛数字没有变化--- + // ws.onopen = onOpen; + // ws.onclose = onClose; + // //update-end---author:wangshuai---date:2024-04-30---for:【issues/1217】发送测试消息后,铃铛数字没有变化--- + // } + // } + // update-end--author:liaozhiyang---date:20240726---for:[issues/6662] 演示系统socket总断,换一个写法 } function onOpen() {