From 2ec33de134bb69ede62df6ae2c119d03906c8f15 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期三, 10 四月 2024 10:00:53 +0800
Subject: [PATCH] #
---
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