From 9d0acfb65c80c4948c305ca01338f894b87346a0 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期一, 08 四月 2024 09:44:37 +0800
Subject: [PATCH] Merge branch 'Four-Way-Rack' of http://47.97.1.152:5880/r/zy-asrs-master into Four-Way-Rack

---
 zy-asrs-flow/src/pages/map/websocket.js |   40 +++++++++++++++++++++++++++++-----------
 1 files changed, 29 insertions(+), 11 deletions(-)

diff --git a/zy-asrs-flow/src/pages/map/websocket.js b/zy-asrs-flow/src/pages/map/websocket.js
index ccf0f11..39b9eba 100644
--- a/zy-asrs-flow/src/pages/map/websocket.js
+++ b/zy-asrs-flow/src/pages/map/websocket.js
@@ -1,10 +1,12 @@
-import { WEBSOCKET_BASE_URL } from '@/config/setting'
+import { WEBSOCKET_BASE_URL } from '@/config/setting';
 
 export default class WebSocketClient {
 
     constructor(path) {
         this.url = WEBSOCKET_BASE_URL + path;
         this.webSocket = null;
+        this.heartbeatInterval = null; // Store the interval ID
+        this.heartbeatFrequency = 30000; // Heartbeat every 30 seconds
     }
 
     connect() {
@@ -16,41 +18,42 @@
         this.webSocket = new WebSocket(this.url);
 
         this.webSocket.onopen = (event) => {
-            console.log('WebSocket connection opened:');
-            // 杩炴帴鎴愬姛鍚庡彲浠ュ彂閫佹秷鎭�
-            // this.sendMessage('Hello Server!');
+            console.log('websocket connection opened.');
+            // Start the heartbeat
+            this.startHeartbeat();
         };
 
         this.webSocket.onmessage = (event) => {
-            console.log('WebSocket message received:', event.data);
+            // console.log('websocket message received:', event.data);
             this.onMessage(event.data);
         };
 
         this.webSocket.onerror = (event) => {
-            console.error('WebSocket error observed:', event);
+            console.error('websocket error observed:', event);
         };
 
         this.webSocket.onclose = (event) => {
-            console.log('WebSocket connection closed!');
+            console.log('websocket connection closed!');
+            // Clear the heartbeat
+            this.stopHeartbeat();   
             this.reconnect();
         };
     }
 
     sendMessage(message) {
-        if (this.webSocket.readyState === WebSocket.OPEN) {
+        if (this.webSocket && this.webSocket.readyState === WebSocket.OPEN) {
             this.webSocket.send(message);
         } else {
             console.error('WebSocketClient: Cannot send message, WebSocket connection is not open.');
         }
     }
 
+    // Override
     onMessage(data) {
-        // 瀛愮被鍙兘浼氶噸鍐欒繖涓柟娉曟潵澶勭悊娑堟伅
-        console.log('WebSocketClient: Message received:', data);
     }
 
     close() {
-        if (this.webSocket.readyState === WebSocket.OPEN) {
+        if (this.webSocket && this.webSocket.readyState === WebSocket.OPEN) {
             this.webSocket.close();
         }
     }
@@ -62,4 +65,19 @@
         }, 3000);
     }
 
+    startHeartbeat() {
+        if(this.heartbeatInterval) {
+            clearInterval(this.heartbeatInterval);
+        }
+        this.heartbeatInterval = setInterval(() => {
+            this.sendMessage('1');
+        }, this.heartbeatFrequency);
+    }
+
+    stopHeartbeat() {
+        if (this.heartbeatInterval) {
+            clearInterval(this.heartbeatInterval);
+            this.heartbeatInterval = null;
+        }
+    }
 }
\ No newline at end of file

--
Gitblit v1.9.1