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