From 708d6ddb416a2eccd4877ce10239f689c9f6fa7b Mon Sep 17 00:00:00 2001 From: WrBug Date: Thu, 26 Feb 2026 10:28:28 +0800 Subject: [PATCH] =?UTF-8?q?fix(binance):=20=E4=BF=AE=E5=A4=8D=20K=20?= =?UTF-8?q?=E7=BA=BF=20WebSocket=20=E6=96=AD=E5=BC=80=E5=90=8E=E6=97=A0?= =?UTF-8?q?=E6=B3=95=E9=87=8D=E8=BF=9E=E5=AF=BC=E8=87=B4=20openPrice/close?= =?UTF-8?q?Price=20=E4=B8=A2=E5=A4=B1=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 当 WebSocket 因网络问题断开时,updateSubscriptions() 只检查订阅集合是否相同, 未检查连接是否真的存在,导致断开后无法重连。 现在会额外检查需要的连接是否都存在,如果缺失则重新建立连接。 Made-with: Cursor --- .../polymarketbot/service/binance/BinanceKlineService.kt | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/backend/src/main/kotlin/com/wrbug/polymarketbot/service/binance/BinanceKlineService.kt b/backend/src/main/kotlin/com/wrbug/polymarketbot/service/binance/BinanceKlineService.kt index c47fe53..67dbf83 100644 --- a/backend/src/main/kotlin/com/wrbug/polymarketbot/service/binance/BinanceKlineService.kt +++ b/backend/src/main/kotlin/com/wrbug/polymarketbot/service/binance/BinanceKlineService.kt @@ -91,7 +91,12 @@ class BinanceKlineService { } }.toSet() val wsKeysNeeded = parsed.map { (_, symbol, interval) -> "$symbol-$interval" }.toSet() - if (normalized == requiredMarketPrefixes.get()) return + + // 检查是否有需要的 WebSocket 连接缺失(可能因网络问题断开) + val hasMissingConnection = wsKeysNeeded.any { it !in connectedWebSockets.keys } + + // 只有当集合相同且所有需要的连接都存在时才跳过 + if (normalized == requiredMarketPrefixes.get() && !hasMissingConnection) return requiredMarketPrefixes.set(normalized) synchronized(subscriptionLock) { connectedWebSockets.keys.toList().forEach { wsKey ->