Jelajahi Sumber

加入ws心跳每30秒一次

liling 2 tahun lalu
induk
melakukan
cf0564be2c
1 mengubah file dengan 8 tambahan dan 5 penghapusan
  1. 8 5
      src/store/modules/websocket.js

+ 8 - 5
src/store/modules/websocket.js

@@ -4,6 +4,7 @@ import { ElMessage } from "element-plus";
 import {
   msgSend
 } from "@/api/chat/msg";
+const heartTimer = null
 const useWebsoctStore = defineStore('websoct', {
   state: () => ({
     messages: [],
@@ -25,9 +26,9 @@ const useWebsoctStore = defineStore('websoct', {
       }
       this.socket.addEventListener("open", () => {
         // console.log("WebSocket连接已打开")
-        setInterval(() => {
+        heartTimer = setInterval(() => {
           this.sendHeartbeat();
-        }, 5000); // 每隔5秒发送一次心跳消息
+        }, 30000); // 每隔30秒发送一次心跳消息
       })
 
       this.socket.addEventListener("message", (event) => {
@@ -46,11 +47,13 @@ const useWebsoctStore = defineStore('websoct', {
         // console.log("WebSocket连接已关闭")
         ElMessage({ message: "WebSocket重连失败,请尝试刷新界面", type: "error" });
         this.reconnect(url);  //尝试重新连接
+        clearInterval(heartTimer)
       })
 
       this.socket.addEventListener("error", (error) => {
         ElMessage({ message: "WebSocket连接错误", type: "error" });
         this. reconnect(url);  //尝试重新连接
+        clearInterval(heartTimer)
       })
     },
     sendMessage(message) {
@@ -81,10 +84,10 @@ const useWebsoctStore = defineStore('websoct', {
       }, 2000);
     },
     sendHeartbeat() {
-      // if (this.socket && this.socket.readyState === WebSocket.OPEN) {
+       if (this.socket && this.socket.readyState === WebSocket.OPEN) {
       //   // 发送心跳消息,可以是一个特定的字符串,表示心跳消息
-      //   this.socket.send("heartbeat");
-      // }
+         this.socket.send("heartbeat");
+       }
     },
     handleMessage(event) {
         console.log('event', event)