From 8f2a4fd023a42d5f3b82a2a97b0c39d8bbee274d Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期三, 03 四月 2024 13:51:01 +0800 Subject: [PATCH] # --- zy-asrs-flow/src/pages/map/websocket.js | 97 ++++++++++++++++++++++++++++++------------------ 1 files changed, 60 insertions(+), 37 deletions(-) diff --git a/zy-asrs-flow/src/pages/map/websocket.js b/zy-asrs-flow/src/pages/map/websocket.js index 20dea9b..bc2001a 100644 --- a/zy-asrs-flow/src/pages/map/websocket.js +++ b/zy-asrs-flow/src/pages/map/websocket.js @@ -1,42 +1,65 @@ -export const createWs = () => { - console.log('Creating WebSocket connection...'); - const webSocket = new WebSocket('ws://127.0.0.1:9090/wcs/map/websocket'); +import { WEBSOCKET_BASE_URL } from '@/config/setting' - // 杩炴帴鎵撳紑鏃惰Е鍙� - webSocket.onopen = function (event) { - console.log('WebSocket connection opened:', event); - // 鍦ㄦ娣诲姞鍙互鍦ㄨ繛鎺ユ墦寮�鏃跺彂閫佺殑浠讳綍娑堟伅 - // webSocket.send('Hello Server!'); - }; +export default class WebSocketClient { - // 浠庢湇鍔″櫒鎺ユ敹鍒版秷鎭椂瑙﹀彂 - webSocket.onmessage = function (event) { - console.log('WebSocket message received:', event.data); - // 鍦ㄨ繖閲屽鐞嗘帴鏀跺埌鐨勬秷鎭� - }; + constructor(path) { + this.url = WEBSOCKET_BASE_URL + path; + this.webSocket = null; + } - // 鍑虹幇閿欒鏃惰Е鍙� - webSocket.onerror = function (event) { - console.error('WebSocket error observed:', event); - // 鍦ㄨ繖閲屽鐞哤ebSocket閿欒 - }; - - // 杩炴帴鍏抽棴鏃惰Е鍙� - webSocket.onclose = function (event) { - console.log('WebSocket connection closed:', event); - // 鍦ㄨ繖閲屽鐞嗚繛鎺ュ叧闂簨浠� - // 浣犲彲鑳芥兂瑕侀噸鏂拌繛鎺ユ垨瀵圭敤鎴疯繘琛屽弸濂芥彁绀� - }; - - // 璇锋眰鍏抽棴WebSocket杩炴帴锛堜富鍔ㄥ叧闂級锛屼綘鍙互浠庡叾浠栧嚱鏁拌皟鐢ㄨ繖涓� - const closeWebSocket = () => { - if (webSocket.readyState === WebSocket.OPEN) { - webSocket.close(); // 杩欏皢瑙﹀彂'onclose'浜嬩欢 + connect() { + if (!this.url) { + console.error('WebSocketClient: Cannot connect without url.'); + return; } - }; - return { - webSocket, - closeWebSocket - }; -}; \ No newline at end of file + this.webSocket = new WebSocket(this.url); + + this.webSocket.onopen = (event) => { + console.log('WebSocket connection opened:', event); + // 杩炴帴鎴愬姛鍚庡彲浠ュ彂閫佹秷鎭� + // this.sendMessage('Hello Server!'); + }; + + this.webSocket.onmessage = (event) => { + console.log('WebSocket message received:', event.data); + this.onMessage(event.data); + }; + + this.webSocket.onerror = (event) => { + console.error('WebSocket error observed:', event); + }; + + this.webSocket.onclose = (event) => { + console.log('WebSocket connection closed!'); + this.reconnect(); + }; + } + + sendMessage(message) { + if (this.webSocket.readyState === WebSocket.OPEN) { + this.webSocket.send(message); + } else { + console.error('WebSocketClient: Cannot send message, WebSocket connection is not open.'); + } + } + + onMessage(data) { + // 瀛愮被鍙兘浼氶噸鍐欒繖涓柟娉曟潵澶勭悊娑堟伅 + console.log('WebSocketClient: Message received:', data); + } + + close() { + if (this.webSocket.readyState === WebSocket.OPEN) { + this.webSocket.close(); + } + } + + reconnect() { + setTimeout(() => { + console.log('WebSocketClient: Attempting to reconnect...'); + this.connect(); + }, 3000); + } + +} \ No newline at end of file -- Gitblit v1.9.1