Administrator
3 hours ago 1278ee2bd43b401489b4377b0eee5259b3d5bbbb
src/main/java/com/xcong/excoin/modules/okxApi/OkxKlineWebSocketClient.java
@@ -66,8 +66,14 @@
    private final List<OkxChannelHandler> channelHandlers = new ArrayList<>();
    private volatile Runnable onLoginSuccess;
    public WebSocketClient getWebSocketClient() {
        return webSocketClient;
    }
    public void setOnLoginSuccess(Runnable onLoginSuccess) {
        this.onLoginSuccess = onLoginSuccess;
    }
    private final ExecutorService sharedExecutor = Executors.newCachedThreadPool(r -> {
@@ -111,7 +117,6 @@
            JSONObject login = OkxWsUtil.buildJsonObject(null, "login", argsArray);
            webSocketClient.send(login.toJSONString());
            log.info("[WS] 发送登录请求");
        } catch (Exception e) {
            log.error("[WS] 登录请求构建失败", e);
        }
@@ -249,17 +254,18 @@
                        handler.subscribe(webSocketClient);
                    }
                    sendPing();
                    if (onLoginSuccess != null) {
                        onLoginSuccess.run();
                    }
                } else {
                    log.error("[WS] WebSocket登录失败, code:{}, msg:{}", code, response.getString("msg"));
                }
                return;
            }
            if ("subscribe".equals(event)) {
                log.info("[WS] 订阅成功: {}", response.getJSONObject("arg"));
                return;
            }
            if ("unsubscribe".equals(event)) {
                log.info("[WS] 取消订阅成功: {}", response.getJSONObject("arg"));
                return;
            }
            if ("error".equals(event)) {
@@ -272,7 +278,14 @@
            }
            String op = response.getString("op");
            if ("order".equals(op) || "batch-orders".equals(op)) {
                log.info("[WS] 收到下单推送结果: {}", JSON.toJSONString(response.get("data")));
                JSONArray dataArr = response.getJSONArray("data");
                if (dataArr != null && !dataArr.isEmpty()) {
                    JSONObject first = dataArr.getJSONObject(0);
                    String sCode = first.getString("sCode");
                    if (sCode != null && !"0".equals(sCode)) {
                        log.error("[WS] 下单失败, sCode:{}, sMsg:{}", sCode, first.getString("sMsg"));
                    }
                }
                return;
            }
            for (OkxChannelHandler handler : channelHandlers) {