From bf18e7de3ebfa4d258b1b4c94451a2221a17cd42 Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期三, 03 四月 2024 14:06:14 +0800 Subject: [PATCH] # --- zy-asrs-flow/src/pages/map/websocket.js | 29 ++++++++++++++++++++++++----- 1 files changed, 24 insertions(+), 5 deletions(-) diff --git a/zy-asrs-flow/src/pages/map/websocket.js b/zy-asrs-flow/src/pages/map/websocket.js index d6acb3d..1b4b9a5 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 10 seconds } connect() { @@ -17,8 +19,8 @@ this.webSocket.onopen = (event) => { console.log('websocket connection opened.'); - // 杩炴帴鎴愬姛鍚庡彲浠ュ彂閫佹秷鎭� - // this.sendMessage('Hello Server!'); + // Start the heartbeat + this.startHeartbeat(); }; this.webSocket.onmessage = (event) => { @@ -32,12 +34,14 @@ this.webSocket.onclose = (event) => { 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.'); @@ -50,7 +54,7 @@ } close() { - if (this.webSocket.readyState === WebSocket.OPEN) { + if (this.webSocket && this.webSocket.readyState === WebSocket.OPEN) { this.webSocket.close(); } } @@ -62,4 +66,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