From 304f66653474ff7684bb3ddbed38ff7f908195ee Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Tue, 02 Jun 2026 13:47:08 +0800
Subject: [PATCH] fix(okxNewPrice): 解决WebSocket连接超时问题
---
src/main/java/com/xcong/excoin/modules/okxNewPrice/gridWs/OkxPositionsChannelHandler.java | 17 +++++++++++++----
1 files changed, 13 insertions(+), 4 deletions(-)
diff --git a/src/main/java/com/xcong/excoin/modules/okxNewPrice/gridWs/OkxPositionsChannelHandler.java b/src/main/java/com/xcong/excoin/modules/okxNewPrice/gridWs/OkxPositionsChannelHandler.java
index 5749544..41aac08 100644
--- a/src/main/java/com/xcong/excoin/modules/okxNewPrice/gridWs/OkxPositionsChannelHandler.java
+++ b/src/main/java/com/xcong/excoin/modules/okxNewPrice/gridWs/OkxPositionsChannelHandler.java
@@ -20,10 +20,12 @@
private static final String CHANNEL_NAME = "positions";
private final String instId;
+ private final String instFamily;
private final OkxGridTradeService gridTradeService;
public OkxPositionsChannelHandler(String instId, OkxGridTradeService gridTradeService) {
this.instId = instId;
+ this.instFamily = instId.contains("-") ? instId.substring(0, instId.lastIndexOf("-")) : instId;
this.gridTradeService = gridTradeService;
}
@@ -36,12 +38,13 @@
JSONObject arg = new JSONObject();
arg.put("channel", CHANNEL_NAME);
arg.put("instType", "SWAP");
+ arg.put("instFamily", instFamily);
msg.put("op", "subscribe");
JSONArray args = new JSONArray();
args.add(arg);
msg.put("args", args);
ws.send(msg.toJSONString());
- log.info("[OKX-WS] {} 订阅成功", CHANNEL_NAME);
+ log.info("[OKX-WS] {} 订阅成功, instFamily:{}", CHANNEL_NAME, instFamily);
}
@Override
@@ -50,6 +53,7 @@
JSONObject arg = new JSONObject();
arg.put("channel", CHANNEL_NAME);
arg.put("instType", "SWAP");
+ arg.put("instFamily", instFamily);
msg.put("op", "unsubscribe");
JSONArray args = new JSONArray();
args.add(arg);
@@ -69,11 +73,16 @@
if (data == null || data.isEmpty()) return true;
for (int i = 0; i < data.size(); i++) {
JSONObject pos = data.getJSONObject(i);
- if (!instId.equals(pos.getString("instId"))) continue;
+ String posInstId = pos.getString("instId");
+ if (posInstId == null || !instId.equals(posInstId)) continue;
String posSide = pos.getString("posSide");
- BigDecimal posSize = new BigDecimal(pos.getString("pos"));
- BigDecimal avgPx = new BigDecimal(pos.getString("avgPx"));
+ String posStr = pos.getString("pos");
+ String avgPxStr = pos.getString("avgPx");
+ if (posStr == null || posStr.isEmpty() || avgPxStr == null || avgPxStr.isEmpty()) continue;
+
+ BigDecimal posSize = new BigDecimal(posStr);
+ BigDecimal avgPx = new BigDecimal(avgPxStr);
log.info("[OKX-WS] 持仓更新, instId:{}, posSide:{}, pos:{}, avgPx:{}",
instId, posSide, posSize, avgPx);
--
Gitblit v1.9.1