From 4130970dd61791e0a5cb0771a9b707084f1ed464 Mon Sep 17 00:00:00 2001
From: zj <1772600164@qq.com>
Date: Thu, 08 May 2025 00:39:05 +0800
Subject: [PATCH] 1

---
 src/main/java/com/nq/ws/WebsocketRunClient.java |   44 ++++++++++++++++++++++++++++----------------
 1 files changed, 28 insertions(+), 16 deletions(-)

diff --git a/src/main/java/com/nq/ws/WebsocketRunClient.java b/src/main/java/com/nq/ws/WebsocketRunClient.java
index 907681e..763aa6d 100644
--- a/src/main/java/com/nq/ws/WebsocketRunClient.java
+++ b/src/main/java/com/nq/ws/WebsocketRunClient.java
@@ -45,24 +45,23 @@
     static {
         httpPost = new HttpPost("http://127.0.0.1:8001/api/sendNotification"); // 初始化 HttpPost
     }
-
+    private Timer heartbeatTimer;
     @Override
     public void onOpen(ServerHandshake serverHandshake) {
         send(("key:"+ eStockType.getStockKey()+":"+eStockType.getContryId()).getBytes());
-//        Timer heartbeatTimer;
-//        // 启动心跳定时器
-//        heartbeatTimer = new Timer();
-//        heartbeatTimer.schedule(new TimerTask() {
-//            @Override
-//            public void run() {
-//                send(("key:"+ eStockType.getStockKey()+":"+eStockType.getContryId()).getBytes());
-//            }
-//        }, 0, 3000); // 每3秒发送一次心跳消息
+        // 启动心跳定时器
+        heartbeatTimer = new Timer();
+        heartbeatTimer.schedule(new TimerTask() {
+            @Override
+            public void run() {
+                send("heartbeat");
+            }
+        }, 0, 3000); // 每3秒发送一次心跳消息
     }
 
     @Override
     public void onMessage(String s) {
-        if(!s.equals("pong") && !s.equals("身份验证成功")){
+        if(!s.equals("pong") && !s.equals("身份验证成功") && !s.equals("请先身份校验")){
             Map<String, String> stringObjectMap = jsonToMap(s);
             StockRealTimeBean stockRealTimeBean = new StockRealTimeBean();
             stockRealTimeBean.setPid(stringObjectMap.get("Id").toString());
@@ -74,14 +73,16 @@
             stockRealTimeBean.setPc(stringObjectMap.get("Chg").toString());
             stockRealTimeBean.setPcp(stringObjectMap.get("ChgPct").toString()+"%");
             stockRealTimeBean.setTime(stringObjectMap.get("Time").toString());
-            RedisKeyUtil.setCacheRealTimeStock(EStockType.IN,stockRealTimeBean);
+            RedisKeyUtil.setCacheRealTimeStock(EStockType.ST,stockRealTimeBean);
             ObjectMapper objectMapper = new ObjectMapper();
             try {
                 if(!stockRealTimeBean.getPcp().contains("-")){
                     stockRealTimeBean.setPcp("+"+stringObjectMap.get("ChgPct").toString()+"%");
                 }
                 String json = objectMapper.writeValueAsString(stockRealTimeBean);
-                sendLoca(json);
+//                sendLoca(json);
+                StockRealTimeBean stockDetailBean =  new Gson().fromJson(s, StockRealTimeBean.class);
+                RedisKeyUtil.setCacheRealTimeStock(EStockType.ST,stockDetailBean);
             } catch (JsonProcessingException e) {
                 throw new RuntimeException(e);
             }
@@ -96,13 +97,24 @@
     }
 
     @Override
-    public void onClose(int i, String s, boolean b) {
-        log.info("websocket  印度股票  关闭"+1);
+    public void onClose(int code, String reason, boolean remote) {
+        System.out.println("连接关闭: " + reason);
+        if (heartbeatTimer != null) {
+            heartbeatTimer.cancel(); // 取消心跳定时器
+        }
+        // 尝试重新连接
+        try {
+            System.out.println("尝试重新连接...");
+            Thread.sleep(10000); // 10秒后尝试重新连接
+            connect(); // 重新连接
+        } catch (InterruptedException e) {
+            e.printStackTrace();
+        }
     }
 
     @Override
     public void onError(Exception e) {
-        log.info("websocket 错误");
+        log.info("websocket 错误"+e.getMessage());
     }
 
     public void sendLoca(String message) {

--
Gitblit v1.9.3