From b78e68890f8277d3c3c322cd96f24c3194417667 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Tue, 02 Jun 2026 14:01:32 +0800
Subject: [PATCH] refactor(okxNewPrice): 统一WebSocket登录逻辑并优化频道处理器配置

---
 src/main/java/com/xcong/excoin/modules/okxNewPrice/OkxGridWsClient.java |   23 ++++++++++++-----------
 1 files changed, 12 insertions(+), 11 deletions(-)

diff --git a/src/main/java/com/xcong/excoin/modules/okxNewPrice/OkxGridWsClient.java b/src/main/java/com/xcong/excoin/modules/okxNewPrice/OkxGridWsClient.java
index da664ba..b6974ae 100644
--- a/src/main/java/com/xcong/excoin/modules/okxNewPrice/OkxGridWsClient.java
+++ b/src/main/java/com/xcong/excoin/modules/okxNewPrice/OkxGridWsClient.java
@@ -38,10 +38,10 @@
 
     private static final int HEARTBEAT_TIMEOUT = 10;
 
-    /** 模拟盘公共 WS 地址 */
-    private static final String WS_PUBLIC_URL_SIM = "wss://wspap.okx.com:8443/ws/v5/public";
-    /** 实盘公共 WS 地址 */
-    private static final String WS_PUBLIC_URL_PROD = "wss://ws.okx.com:8443/ws/v5/public";
+    /** 模拟盘业务 WS 地址(K线等行情数据) */
+    private static final String WS_BUSINESS_URL_SIM = "wss://wspap.okx.com:8443/ws/v5/business";
+    /** 实盘业务 WS 地址(K线等行情数据) */
+    private static final String WS_BUSINESS_URL_PROD = "wss://ws.okx.com:8443/ws/v5/business";
     /** 模拟盘私有 WS 地址 */
     private static final String WS_PRIVATE_URL_SIM = "wss://wspap.okx.com:8443/ws/v5/private";
     /** 实盘私有 WS 地址 */
@@ -119,9 +119,9 @@
             System.setProperty("https.protocols", "TLSv1.2,TLSv1.3");
             String wsUrl;
             if (account.isAccountType()) {
-                wsUrl = isPublic ? WS_PUBLIC_URL_PROD : WS_PRIVATE_URL_PROD;
+                wsUrl = isPublic ? WS_BUSINESS_URL_PROD : WS_PRIVATE_URL_PROD;
             } else {
-                wsUrl = isPublic ? WS_PUBLIC_URL_SIM : WS_PRIVATE_URL_SIM;
+                wsUrl = isPublic ? WS_BUSINESS_URL_SIM : WS_PRIVATE_URL_SIM;
             }
             URI uri = new URI(wsUrl);
 
@@ -137,11 +137,7 @@
                     isConnecting.set(false);
                     if (sharedExecutor != null && !sharedExecutor.isShutdown()) {
                         resetHeartbeatTimer();
-                        if (isPublic) {
-                            subscribeAllHandlers();
-                        } else {
-                            wsLogin();
-                        }
+                        wsLogin();
                     }
                 }
 
@@ -171,6 +167,7 @@
                     isConnected.set(false);
                 }
             };
+            webSocketClient.setConnectionLostTimeout(0);
             webSocketClient.connect();
         } catch (URISyntaxException e) {
             log.error("[{}] URI格式错误", logPrefix, e);
@@ -212,6 +209,10 @@
 
     private void handleMessage(String message) {
         try {
+            if ("pong".equals(message)) {
+                log.debug("[{}] 收到 pong", logPrefix);
+                return;
+            }
             JSONObject response = JSON.parseObject(message);
             String event = response.getString("event");
             String op = response.getString("op");

--
Gitblit v1.9.1