From 672f2cf6d8d87dffb5713067b3545e74f544cca7 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Wed, 24 Jun 2026 15:28:17 +0800
Subject: [PATCH] refactor(okxApi): 分离公有和私有频道连接状态管理
---
src/main/java/com/xcong/excoin/modules/okxApi/OkxKlineWebSocketClient.java | 17 +++++++++++------
1 files changed, 11 insertions(+), 6 deletions(-)
diff --git a/src/main/java/com/xcong/excoin/modules/okxApi/OkxKlineWebSocketClient.java b/src/main/java/com/xcong/excoin/modules/okxApi/OkxKlineWebSocketClient.java
index 15612fd..1bd14b6 100644
--- a/src/main/java/com/xcong/excoin/modules/okxApi/OkxKlineWebSocketClient.java
+++ b/src/main/java/com/xcong/excoin/modules/okxApi/OkxKlineWebSocketClient.java
@@ -131,8 +131,11 @@
/** 私有频道连接状态 */
private final AtomicBoolean isPrivateConnected = new AtomicBoolean(false);
- /** 连接中标记,防重入 */
- private final AtomicBoolean isConnecting = new AtomicBoolean(false);
+ /** 公开频道连接中标记,防重入 */
+ private final AtomicBoolean isPublicConnecting = new AtomicBoolean(false);
+
+ /** 私有频道连接中标记,防重入 */
+ private final AtomicBoolean isPrivateConnecting = new AtomicBoolean(false);
/** 初始化标记,防重复 init */
private final AtomicBoolean isInitialized = new AtomicBoolean(false);
@@ -302,7 +305,8 @@
String wsUrl = isPrivate ? config.getWsPrivateUrl() : config.getWsPublicUrl();
String label = isPrivate ? "私有" : "公开";
- if (isConnecting.get() || !isConnecting.compareAndSet(false, true)) {
+ AtomicBoolean connectingFlag = isPrivate ? isPrivateConnecting : isPublicConnecting;
+ if (connectingFlag.get() || !connectingFlag.compareAndSet(false, true)) {
log.info("[OKX-WS] 连接进行中,跳过重复{} WS请求", label);
return;
}
@@ -315,7 +319,7 @@
@Override
public void onOpen(ServerHandshake handshake) {
log.info("[OKX-WS] {} WS连接成功", label);
- isConnecting.set(false);
+ connectingFlag.set(false);
if (isPrivate) {
isPrivateConnected.set(true);
@@ -351,7 +355,7 @@
} else {
isPublicConnected.set(false);
}
- isConnecting.set(false);
+ connectingFlag.set(false);
cancelPongTimeout();
if (sharedExecutor != null && !sharedExecutor.isShutdown() && !sharedExecutor.isTerminated()) {
@@ -372,6 +376,7 @@
@Override
public void onError(Exception ex) {
log.error("[OKX-WS] {} WS发生错误", label, ex);
+ connectingFlag.set(false);
if (isPrivate) {
isPrivateConnected.set(false);
} else {
@@ -389,7 +394,7 @@
}
} catch (URISyntaxException e) {
log.error("[OKX-WS] URI格式错误: {}", wsUrl, e);
- isConnecting.set(false);
+ connectingFlag.set(false);
}
}
--
Gitblit v1.9.1