From ec72fc1827d3e46a99d302dd3c9ca61411c70943 Mon Sep 17 00:00:00 2001
From: zyy <zyy@email.com>
Date: Thu, 24 Jul 2025 14:41:25 +0800
Subject: [PATCH] 修改

---
 src/main/java/com/nq/ws/WebSocketClientBeanConfig.java |   77 +++++++++++++++++++-------------------
 1 files changed, 38 insertions(+), 39 deletions(-)

diff --git a/src/main/java/com/nq/ws/WebSocketClientBeanConfig.java b/src/main/java/com/nq/ws/WebSocketClientBeanConfig.java
index 8d731e5..4e6b9f8 100644
--- a/src/main/java/com/nq/ws/WebSocketClientBeanConfig.java
+++ b/src/main/java/com/nq/ws/WebSocketClientBeanConfig.java
@@ -1,8 +1,7 @@
 package com.nq.ws;
 
-
-import com.nq.constant.StockConstant;
 import com.nq.enums.EStockType;
+import com.nq.utils.PropertiesUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.java_websocket.client.WebSocketClient;
 import org.springframework.context.annotation.Bean;
@@ -21,50 +20,50 @@
     public Map<String, WebSocketClient> websocketRunClientMap() {
 
         Map<String, WebSocketClient> retMap = new HashMap<>(2);
-
-
-
-
         try {
-            WebsocketRunClient websocketRunClient = new WebsocketRunClient(new URI(StockConstant.WS_URL));
-            websocketRunClient.connect();
-            websocketRunClient.setConnectionLostTimeout(0);
-            new Thread(() -> {
-                while (true) {
-                    try {
-                        Thread.sleep(8000);
-                        websocketRunClient.send("heartbeat".getBytes());
-                    } catch (Exception e) {
-                        websocketRunClient.reconnect();
-                        websocketRunClient.setConnectionLostTimeout(0);
-                    }
-                }
-            }).start();
-            retMap.put(EStockType.IN.getStockKey(), websocketRunClient);
-        } catch (Exception e) {
-        }
-
-        try {
-            USWebsocketRunClient usWebsocketRunClient = new USWebsocketRunClient(new URI(StockConstant.US_WS_URL));
+            WebsocketRunClient usWebsocketRunClient = new WebsocketRunClient(new URI(PropertiesUtil.getProperty("US_WS_URL")),EStockType.US);
             usWebsocketRunClient.connect();
             usWebsocketRunClient.setConnectionLostTimeout(0);
-            new Thread(() -> {
-                while (true) {
-                    try {
-                        Thread.sleep(8000);
-                        usWebsocketRunClient.send("heartbeat".getBytes());
-                    } catch (Exception e) {
-                        usWebsocketRunClient.reconnect();
-                        usWebsocketRunClient.setConnectionLostTimeout(0);
-                    }
-                }
-            }).start();
+            startHeartbeatThread(usWebsocketRunClient);
             retMap.put(EStockType.US.getStockKey(), usWebsocketRunClient);
         } catch (Exception e) {
+            log.error("usWebsocketRunClient 异常: {}", e.getMessage());
         }
-
+        try {
+            MXWebsocketRunClient mxWebsocketRunClient = new MXWebsocketRunClient(new URI(PropertiesUtil.getProperty("MX_WS_URL")),EStockType.MX);
+            mxWebsocketRunClient.connect();
+            mxWebsocketRunClient.setConnectionLostTimeout(0);
+            startHeartbeatThread(mxWebsocketRunClient);
+            retMap.put(EStockType.MX.getStockKey(), mxWebsocketRunClient);
+        } catch (Exception e) {
+            log.error("mxWebsocketRunClient 异常: {}", e.getMessage());
+        }
         return retMap;
     }
 
+    private void startHeartbeatThread(WebSocketClient client) {
+        new Thread(() -> {
+            while (true) {
+                try {
+                    Thread.sleep(8000);
+                    if (client.isOpen()) { // 先检查连接状态
+                        client.send("heartbeat".getBytes());
+                    } else {
+                        client.reconnect();
+                        client.setConnectionLostTimeout(0);
+                    }
+                } catch (Exception e) {
+                    log.error("心跳线程异常, 尝试重连: {}", e.getMessage());
+                    try {
+                        client.reconnect();
+                        client.setConnectionLostTimeout(0);
+                    } catch (Exception re) {
+                        log.error("重连失败: {}", re.getMessage());
+                    }
+                }
+            }
+        }).start();
+    }
 
-}
+
+}
\ No newline at end of file

--
Gitblit v1.9.3