From 01b3fecb2d1b03861a72d53a7afea6ca557a209c Mon Sep 17 00:00:00 2001
From: zyy <zyy@email.com>
Date: Thu, 02 Apr 2026 15:02:41 +0800
Subject: [PATCH] 1

---
 src/main/java/com/nq/ws/WebSocketClientBeanConfig.java |  116 +++++++++++++++++++++++++++++++++++-----------------------
 1 files changed, 70 insertions(+), 46 deletions(-)

diff --git a/src/main/java/com/nq/ws/WebSocketClientBeanConfig.java b/src/main/java/com/nq/ws/WebSocketClientBeanConfig.java
index 3242bcc..6534221 100644
--- a/src/main/java/com/nq/ws/WebSocketClientBeanConfig.java
+++ b/src/main/java/com/nq/ws/WebSocketClientBeanConfig.java
@@ -1,46 +1,70 @@
-//package com.nq.ws;
-//
-//
-//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;
-//import org.springframework.context.annotation.Configuration;
-//
-//import java.net.URI;
-//import java.util.HashMap;
-//import java.util.Map;
-//
-//@Slf4j
-//@Configuration
-//public class WebSocketClientBeanConfig {
-//
-//
-//    @Bean
-//    public Map<String, WebSocketClient> websocketRunClientMap() {
-//
-//        Map<String, WebSocketClient> retMap = new HashMap<>(2);
-//        try {
-//            WebsocketRunClient websocketRunClient = new WebsocketRunClient(new URI("wss://ws.durocaspitall.com/websocket-server"),EStockType.IN);
-//            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();
-//        } catch (Exception e) {
-//        }
-//
-//        return retMap;
-//    }
-//
-//
-//}
+package com.nq.ws;
+
+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;
+import org.springframework.context.annotation.Configuration;
+
+import java.net.URI;
+import java.util.HashMap;
+import java.util.Map;
+
+@Slf4j
+@Configuration
+public class WebSocketClientBeanConfig {
+
+
+    @Bean
+    public Map<String, WebSocketClient> websocketRunClientMap() {
+
+        Map<String, WebSocketClient> retMap = new HashMap<>(2);
+        try {
+            JPWebsocketRunClient jpWebsocketRunClient = new JPWebsocketRunClient(new URI(PropertiesUtil.getProperty("JP_WS_URL")), EStockType.JP);
+            jpWebsocketRunClient.connect();
+            jpWebsocketRunClient.setConnectionLostTimeout(0);
+            startHeartbeatThread(jpWebsocketRunClient);
+            retMap.put(EStockType.JP.getStockKey(), jpWebsocketRunClient);
+        } catch (Exception e) {
+            log.error("jpWebsocketRunClient 异常: {}", e.getMessage());
+        }
+        try {
+            USWebsocketRunClient usWebsocketRunClient = new USWebsocketRunClient(new URI(PropertiesUtil.getProperty("US_WS_URL")), EStockType.US);
+            usWebsocketRunClient.connect();
+            usWebsocketRunClient.setConnectionLostTimeout(0);
+            startHeartbeatThread(usWebsocketRunClient);
+            retMap.put(EStockType.US.getStockKey(), usWebsocketRunClient);
+        } catch (Exception e) {
+            log.error("usWebsocketRunClient 异常: {}", 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();
+    }
+
+
+}
+

--
Gitblit v1.9.3