From 807839aee63cc115f89326e1c0a8703ef40b71b2 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Sun, 04 Jan 2026 16:38:13 +0800
Subject: [PATCH] fix(websocket): 修复心跳处理逻辑

---
 src/main/java/com/xcong/excoin/modules/newPrice/OkxNewPriceWebSocketClient.java |   24 ++++++++++++------------
 1 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/src/main/java/com/xcong/excoin/modules/newPrice/OkxNewPriceWebSocketClient.java b/src/main/java/com/xcong/excoin/modules/newPrice/OkxNewPriceWebSocketClient.java
index 5226806..9feb015 100644
--- a/src/main/java/com/xcong/excoin/modules/newPrice/OkxNewPriceWebSocketClient.java
+++ b/src/main/java/com/xcong/excoin/modules/newPrice/OkxNewPriceWebSocketClient.java
@@ -48,6 +48,10 @@
     private static final String[] INST_IDS = {
             "BTC-USDT", "ETH-USDT", "XRP-USDT", "LTC-USDT", "BCH-USDT", "ETC-USDT"
     };
+    //BTC-USDT-SWAP
+    private static final String[] INST_IDS_INTEREST = {
+            "BTC-USDT-SWAP", "ETH-USDT-SWAP", "XRP-USDT-SWAP", "LTC-USDT-SWAP", "BCH-USDT-SWAP", "ETC-USDT-SWAP"
+    };
 
     // 心跳超时时间(秒),小于30秒
     private static final int HEARTBEAT_TIMEOUT = 10;
@@ -189,7 +193,7 @@
         subscribeMsg.put("op", "subscribe");
 
         JSONArray argsArray = new JSONArray();
-        for (String instId : INST_IDS) {
+        for (String instId : INST_IDS_INTEREST) {
             JSONObject arg = new JSONObject();
             arg.put("channel", CHANNEL_OPEN_INTEREST);
             arg.put("instId", instId);
@@ -209,6 +213,12 @@
      */
     private void handleWebSocketMessage(String message) {
         try {
+
+            if ("pong".equals(message)) {
+                log.debug("{}: 收到心跳响应");
+                cancelPongTimeout();
+                return;
+            }
             JSONObject response = JSON.parseObject(message);
             String event = response.getString("event");
 
@@ -217,9 +227,6 @@
             } else if ("error".equals(event)) {
                 log.error("价格订阅错误: code={}, msg={}",
                         response.getString("code"), response.getString("msg"));
-            } else if ("pong".equals(event)) {
-                log.debug("收到pong响应");
-                cancelPongTimeout();
             } else {
                 processPushData(response);
             }
@@ -323,11 +330,6 @@
                             String redisKey = "volume:" + buildRedisKey(instId);
                             redisUtils.set(redisKey, oiUsd);
 
-                            String symbol = CoinTypeConvert.okxConvert(instId);
-                            if (symbol != null) {
-                                redisUtils.set(CoinTypeConvert.convertToVolumeKey(symbol), oiUsd);
-                            }
-
                             log.debug("更新持仓量: {} = {}, 时间: {}", redisKey, oiUsd, ts);
                         } catch (Exception innerEx) {
                             log.warn("处理单条价格数据失败", innerEx);
@@ -401,9 +403,7 @@
     private void sendPing() {
         try {
             if (webSocketClient != null && webSocketClient.isOpen()) {
-                JSONObject ping = new JSONObject();
-                ping.put("op", "ping");
-                webSocketClient.send(ping.toJSONString());
+                webSocketClient.send("ping");
                 log.debug("发送ping请求");
             }
         } catch (Exception e) {

--
Gitblit v1.9.1