From 7c4de2cb1422f6f4748928df5bbcc802d85dd820 Mon Sep 17 00:00:00 2001
From: PC-20250623MANY\Administrator <344137771@qq.com>
Date: Sat, 23 Aug 2025 14:47:15 +0800
Subject: [PATCH] 1

---
 src/components/stock-list.vue |   30 +++++++++++++++++++++++++++++-
 1 files changed, 29 insertions(+), 1 deletions(-)

diff --git a/src/components/stock-list.vue b/src/components/stock-list.vue
index a2b8ad3..54685f0 100644
--- a/src/components/stock-list.vue
+++ b/src/components/stock-list.vue
@@ -66,6 +66,7 @@
 import nPagination from "@/components/nPagination.vue";
 import * as api from "@/axios/api";
 import { Toast } from "vant";
+import { WhrWebSocket } from "@/utils/WhrWebSocket";
 export default {
   name: "stock_list",
   components: {
@@ -76,7 +77,7 @@
       pageNum: 1,
       pageSize: 10,
       total: 1,
-      stockList: []
+      stockList: [],
     };
   },
   props: {
@@ -113,6 +114,7 @@
   },
   mounted() {
     this.getStockList();
+    this.initWebSocket();
   },
   methods: {
     // 获取数据
@@ -161,6 +163,32 @@
       } else {
         Toast.fail(data.msg);
       }
+    },
+    // 连接ws实时监控变动
+    initWebSocket() {
+      console.log("initWebSocket");
+      this.Trade = new WhrWebSocket({
+        path: `wss://ws.acapl.net/websocket-server `,
+        onmessage: this.getTradeMessage
+      });
+
+      this.Trade.init();
+    },
+    getTradeMessage({ data }) {
+      let result = JSON.parse(data);
+      let pid = result.pid;
+      let userToUpdate = this.stockList.find(item => item.code == pid);
+      if (userToUpdate) {
+        // 更新对象数据
+        userToUpdate.nowPrice = result.last;
+        userToUpdate.hcrateP = result.pcp;
+      }
+    }
+  },
+  beforeDestroy() {
+    if (this.Trade) {
+      this.Trade.close();
+      console.log("WebSocket disconnected");
     }
   }
 };

--
Gitblit v1.9.3