From 8dead84802eaebdaf2c208a25eddd9b626e37da6 Mon Sep 17 00:00:00 2001
From: dd <gitluke@outlook.com>
Date: Mon, 03 Nov 2025 21:58:02 +0800
Subject: [PATCH] 1

---
 src/main/java/com/nq/ws/WebsocketRunClient.java |   95 ++++++++++++++++++-----------------------------
 1 files changed, 37 insertions(+), 58 deletions(-)

diff --git a/src/main/java/com/nq/ws/WebsocketRunClient.java b/src/main/java/com/nq/ws/WebsocketRunClient.java
index 9c2fd8a..8b2bd21 100644
--- a/src/main/java/com/nq/ws/WebsocketRunClient.java
+++ b/src/main/java/com/nq/ws/WebsocketRunClient.java
@@ -28,26 +28,21 @@
 import java.util.*;
 
 @Slf4j
-public class WebsocketRunClient  extends WebSocketClient {
+public class WebsocketRunClient extends WebSocketClient {
 
     private EStockType eStockType;
-    public WebsocketRunClient(URI serverUri,
-    EStockType eStockType
-    ) {
-        super(serverUri);
+
+    public WebsocketRunClient(URI serverUri, EStockType eStockType) {
+        // 修改为新的WebSocket服务器地址
+        super(URI.create("wss://usws.yanshiz.com/websocket-server"));
         this.eStockType = eStockType;
     }
 
-    private static HttpClient httpClient = HttpClients.createDefault(); // 单例化 HttpClient
-
-
-    private static HttpPost httpPost;
-    static {
-        httpPost = new HttpPost("http://127.0.0.1:8001/api/sendNotification"); // 初始化 HttpPost
-    }
 
     @Override
     public void onOpen(ServerHandshake serverHandshake) {
+        log.info("WebSocket连接已建立,连接到: wss://usws.yanshiz.com/websocket-server");
+        // 发送身份验证消息
         send(("key:"+ eStockType.getStockKey()+":"+eStockType.getContryId()).getBytes());
         Timer heartbeatTimer;
         // 启动心跳定时器
@@ -55,7 +50,9 @@
         heartbeatTimer.schedule(new TimerTask() {
             @Override
             public void run() {
-                send(("key:"+ eStockType.getStockKey()+":"+eStockType.getContryId()).getBytes());
+                if (isOpen()) {
+                    send(("key:"+ eStockType.getStockKey()+":"+eStockType.getContryId()).getBytes());
+                }
             }
         }, 0, 3000); // 每3秒发送一次心跳消息
     }
@@ -63,33 +60,35 @@
     @Override
     public void onMessage(String s) {
         if(!s.equals("pong") && !s.equals("身份验证成功")){
-            Map<String, String> stringObjectMap = jsonToMap(s);
-            StockRealTimeBean stockRealTimeBean = new StockRealTimeBean();
-            stockRealTimeBean.setPid(stringObjectMap.get("Id").toString());
-            stockRealTimeBean.setLast(stringObjectMap.get("Last").toString());
-            stockRealTimeBean.setBid(stringObjectMap.get("Bid").toString());
-            stockRealTimeBean.setAsk(stringObjectMap.get("Ask").toString());
-            stockRealTimeBean.setHigh(stringObjectMap.get("High").toString());
-            stockRealTimeBean.setLow(stringObjectMap.get("Low").toString());
-            stockRealTimeBean.setPc(stringObjectMap.get("Chg").toString());
-            stockRealTimeBean.setPcp(stringObjectMap.get("ChgPct").toString()+"%");
-            stockRealTimeBean.setTime(stringObjectMap.get("Time").toString());
-            RedisKeyUtil.setCacheRealTimeStock(EStockType.IN,stockRealTimeBean);
-            ObjectMapper objectMapper = new ObjectMapper();
             try {
+                Map<String, String> stringObjectMap = jsonToMap(s);
+                StockRealTimeBean stockRealTimeBean = new StockRealTimeBean();
+                stockRealTimeBean.setPid(stringObjectMap.get("Id"));
+                stockRealTimeBean.setLast(stringObjectMap.get("Last"));
+                stockRealTimeBean.setBid(stringObjectMap.get("Bid"));
+                stockRealTimeBean.setAsk(stringObjectMap.get("Ask"));
+                stockRealTimeBean.setHigh(stringObjectMap.get("High"));
+                stockRealTimeBean.setLow(stringObjectMap.get("Low"));
+                stockRealTimeBean.setPc(stringObjectMap.get("Chg"));
+                stockRealTimeBean.setPcp(stringObjectMap.get("ChgPct") + "%");
+                stockRealTimeBean.setTime(stringObjectMap.get("Time"));
+
+                RedisKeyUtil.setCacheRealTimeStock(EStockType.US, stockRealTimeBean);
+
+                ObjectMapper objectMapper = new ObjectMapper();
                 if(!stockRealTimeBean.getPcp().contains("-")){
-                    stockRealTimeBean.setPcp("+"+stringObjectMap.get("ChgPct").toString()+"%");
+                    stockRealTimeBean.setPcp("+" + stringObjectMap.get("ChgPct") + "%");
                 }
-                String json = objectMapper.writeValueAsString(stockRealTimeBean);
-                sendLoca(json);
-                StockRealTimeBean stockDetailBean =  new Gson().fromJson(s, StockRealTimeBean.class);
-                RedisKeyUtil.setCacheRealTimeStock(EStockType.IN,stockDetailBean);
-            } catch (JsonProcessingException e) {
-                throw new RuntimeException(e);
+
+                StockRealTimeBean stockDetailBean = new Gson().fromJson(s, StockRealTimeBean.class);
+                RedisKeyUtil.setCacheRealTimeStock(EStockType.US, stockDetailBean);
+
+            } catch (Exception e) {
+                log.error("处理WebSocket消息时发生错误: {}", e.getMessage(), e);
             }
 
-        }else{
-            log.error("websocket  消息错误:"+s);
+        } else {
+            log.info("WebSocket心跳或认证响应: {}", s);
         }
     }
 
@@ -101,31 +100,11 @@
 
     @Override
     public void onClose(int i, String s, boolean b) {
-        log.info("websocket  印度股票  关闭"+1);
+        log.info("WebSocket连接已关闭,代码: {}, 原因: {}, 远程关闭: {}", i, s, b);
     }
 
     @Override
     public void onError(Exception e) {
-        log.info("websocket 错误");
+        log.error("WebSocket连接发生错误: {}", e.getMessage(), e);
     }
-
-    public void sendLoca(String message) {
-        try {
-            // 准备 form-data 参数
-            List<BasicNameValuePair> params = new ArrayList<>();
-            params.add(new BasicNameValuePair("message", message));
-
-            // 设置编码格式为 UTF-8
-            UrlEncodedFormEntity entity = new UrlEncodedFormEntity(params, StandardCharsets.UTF_8);
-            httpPost.setEntity(entity); // 设置 HttpPost 对象的参数
-
-            // 发送请求
-            HttpResponse response = httpClient.execute(httpPost);
-
-            // 处理响应
-            int statusCode = response.getStatusLine().getStatusCode();
-        } catch (IOException e) {
-            log.error("Http 请求错误", e);
-        }
-    }
-}
+}
\ No newline at end of file

--
Gitblit v1.9.3