zyy
2025-08-28 76388afc59b66335dcf630e5ed30beccbe7aeb5b
src/main/java/com/nq/ws/WebsocketRunClient.java
@@ -52,7 +52,11 @@
        heartbeatTimer.schedule(new TimerTask() {
            @Override
            public void run() {
                send(("key:"+ eStockType.getStockKey()+":"+eStockType.getContryId()).getBytes());
                if (isOpen()) {
                    //send(("key:"+ eStockType.getStockKey()+":"+eStockType.getContryId()).getBytes());
                    send("heartbeat");
                }
            }
        }, 0, 3000); // 每3秒发送一次心跳消息
    }
@@ -60,10 +64,10 @@
    @Override
    public void onMessage(String message) {
        if (message.contains("身份验证成功") || message.contains("pong") || message.contains("身份验证失败") || message.contains("ws连接点只能有一个")) {
            System.out.println("us" + message);
            System.out.println("hk" + message);
            return;
        }
        System.out.println("us2" + message);
        System.out.println("hk2" + message);
        Map<String, String> stringObjectMap = jsonToMap(message);
        StockRealTimeBean stockRealTimeBean = new StockRealTimeBean();
        stockRealTimeBean.setPid(stringObjectMap.get("Id").toString());
@@ -75,7 +79,7 @@
        stockRealTimeBean.setPc(stringObjectMap.get("Chg").toString());
        stockRealTimeBean.setPcp(stringObjectMap.get("ChgPct").toString()+"%");
        stockRealTimeBean.setTime(stringObjectMap.get("Time").toString());
        RedisKeyUtil.setCacheRealTimeStock(EStockType.US,stockRealTimeBean);
        RedisKeyUtil.setCacheRealTimeStock(EStockType.HK,stockRealTimeBean);
        ObjectMapper objectMapper = new ObjectMapper();
        try {
            if(!stockRealTimeBean.getPcp().contains("-")){
@@ -84,10 +88,9 @@
            String json = objectMapper.writeValueAsString(stockRealTimeBean);
            sendLoca(json);
            StockRealTimeBean stockDetailBean =  new Gson().fromJson(message, StockRealTimeBean.class);
            System.out.println(stockDetailBean);
            RedisKeyUtil.setCacheRealTimeStock(EStockType.US,stockDetailBean);
            RedisKeyUtil.setCacheRealTimeStock(EStockType.HK,stockDetailBean);
        } catch (JsonProcessingException e) {
            log.error("websocket 美国股票 消息错误:{}", e.getMessage());
            log.error("websocket 香港股票 消息错误:{}", e.getMessage());
        }
    }
@@ -99,12 +102,12 @@
    @Override
    public void onClose(int i, String s, boolean b) {
        log.info("websocket 美国股票 关闭"+1);
        log.info("websocket 香港股票 关闭 {} ", i);
    }
    @Override
    public void onError(Exception e) {
        log.info("websocket 美国股票 错误" + e.getMessage());
        log.info("websocket 香港股票 错误{}", e.getMessage());
    }
    public void sendLoca(String message) {