Administrator
2026-06-15 dac84cb80a0dfe39d87ec88abbc4ad3bac8ec309
src/main/java/com/xcong/excoin/modules/gateApi/GateKlineWebSocketClient.java
@@ -85,6 +85,9 @@
        return t;
    });
    /**
     * @param wsUrl Gate WebSocket 地址(由 {@link GateConfig#getWsUrl()} 提供)
     */
    public GateKlineWebSocketClient(String wsUrl) {
        this.wsUrl = wsUrl;
    }
@@ -229,6 +232,7 @@
                    isConnected.set(false);
                }
            };
            webSocketClient.setConnectionLostTimeout(0);
            webSocketClient.connect();
        } catch (URISyntaxException e) {
            log.error("[WS] URI格式错误", e);
@@ -254,6 +258,12 @@
            }
            if ("subscribe".equals(event)) {
                log.info("[WS] {} 订阅成功: {}", channel, response.getJSONObject("result"));
                for (GateChannelHandler handler : channelHandlers) {
                    if (channel.equals(handler.getChannelName())) {
                        handler.setSubscribed(true);
                        break;
                    }
                }
                return;
            }
            if ("unsubscribe".equals(event)) {
@@ -278,6 +288,17 @@
        }
    }
    /**
     * 检查所有已注册的频道是否都已收到订阅成功确认。
     */
    public boolean areAllSubscribed() {
        if (channelHandlers.isEmpty()) return false;
        for (GateChannelHandler h : channelHandlers) {
            if (!h.isSubscribed()) return false;
        }
        return true;
    }
    // ---- heartbeat ----
    /**