Browse Source

socket总断,换一个写法

JEECG 8 tháng trước cách đây
mục cha
commit
d0f09480ca
1 tập tin đã thay đổi với 52 bổ sung18 xóa
  1. 52 18
      jeecgboot-vue3/src/hooks/web/useWebSocket.ts

+ 52 - 18
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() {