From 334a54bbc1300ef0556732b2ea624291a120d07b Mon Sep 17 00:00:00 2001
From: 肖洋 <cathay_xy@163.com>
Date: 星期三, 11 十二月 2024 14:52:18 +0800
Subject: [PATCH] 添加SignalR及事件总线支持

---
 Code Management/.vs/Code Management/v17/workspaceFileList.bin |    0 
 Code Management/WCS/WIDESEAWCS_Client/src/uitils/signalr.js   |  103 +++++++++++++++++++++++++++++++++++++++++++++++++++
 Code Management/.vs/slnx.sqlite                               |    0 
 Code Management/WCS/WIDESEAWCS_Client/src/uitils/eventBus.js  |    5 ++
 Code Management/.vs/Code Management/v17/.wsuo                 |    0 
 5 files changed, 108 insertions(+), 0 deletions(-)

diff --git a/Code Management/.vs/Code Management/v17/.wsuo b/Code Management/.vs/Code Management/v17/.wsuo
new file mode 100644
index 0000000..77c39f3
--- /dev/null
+++ b/Code Management/.vs/Code Management/v17/.wsuo
Binary files differ
diff --git a/Code Management/.vs/Code Management/v17/workspaceFileList.bin b/Code Management/.vs/Code Management/v17/workspaceFileList.bin
new file mode 100644
index 0000000..66fb339
--- /dev/null
+++ b/Code Management/.vs/Code Management/v17/workspaceFileList.bin
Binary files differ
diff --git a/Code Management/.vs/slnx.sqlite b/Code Management/.vs/slnx.sqlite
new file mode 100644
index 0000000..9eff72b
--- /dev/null
+++ b/Code Management/.vs/slnx.sqlite
Binary files differ
diff --git a/Code Management/WCS/WIDESEAWCS_Client/src/uitils/eventBus.js b/Code Management/WCS/WIDESEAWCS_Client/src/uitils/eventBus.js
new file mode 100644
index 0000000..3f6a58d
--- /dev/null
+++ b/Code Management/WCS/WIDESEAWCS_Client/src/uitils/eventBus.js
@@ -0,0 +1,5 @@
+import mitt from 'mitt';
+
+const eventBus = mitt();
+
+export default eventBus;
diff --git a/Code Management/WCS/WIDESEAWCS_Client/src/uitils/signalr.js b/Code Management/WCS/WIDESEAWCS_Client/src/uitils/signalr.js
new file mode 100644
index 0000000..e6b1948
--- /dev/null
+++ b/Code Management/WCS/WIDESEAWCS_Client/src/uitils/signalr.js
@@ -0,0 +1,103 @@
+// import sysConfig from '@/config/index'
+// import tool from '@/utils/tool'
+import store from "../store/index";
+import http from "@/../src/api/http.js";
+import * as signalR from "@microsoft/signalr";
+import { ElNotification } from "element-plus";
+
+import eventBus from "./eventBus";
+
+// import * as signalrMessage from './mqtt/message'
+//浣跨敤signalr
+export default function useSignalr() {
+  // const userInfo = tool.data.get('USER_INFO') //鐢ㄦ埛淇℃伅
+  let openedNotification = null; // 淇濆瓨褰撳墠鎵撳紑鐨凬otification瀹炰緥
+  let socketUrl = "hubs/simple"; //socket鍦板潃
+  // if (sysConfig.VITE_PROXY === 'false') {
+  socketUrl = http.ipAddress + socketUrl; //鍒ゆ柇鏄惁瑕佽蛋浠g悊妯″紡锛岃蛋浜嗙殑璇濆彂甯冧箣鍚庣洿鎺ginx浠g悊
+  // }
+  //寮�濮�
+  const startSignalr = () => {
+    //鍒濆鍖栬繛鎺�
+    const connection = init();
+    // 鍚姩杩炴帴
+    connection
+      .start()
+      .then(() => {
+        console.log("鍚姩杩炴帴");
+      })
+      .catch((err) => {
+        console.log("杩炴帴澶辫触", err);
+      });
+  };
+
+  //鍒濆鍖�
+  const init = () => {
+    console.log("鍒濆鍖朣ignalR瀵硅薄");
+    // SignalR瀵硅薄
+    const connection = new signalR.HubConnectionBuilder()
+      .withUrl(socketUrl, {
+        accessTokenFactory: () => store.getters.getToken(),
+        skipNegotiation: true,
+        transport: signalR.HttpTransportType.WebSockets,
+      })
+      .withAutomaticReconnect({
+        nextRetryDelayInMilliseconds: () => {
+          return 5000; // 姣�5绉掗噸杩炰竴娆�
+        },
+      }) //鑷姩閲嶆柊杩炴帴
+      .configureLogging(signalR.LogLevel.Information)
+      .build();
+    connection.keepAliveIntervalInMilliseconds = 15 * 1000; // 蹇冭烦妫�娴�15s
+    // connection.serverTimeoutInMilliseconds = 30 * 60 * 1000 // 瓒呮椂鏃堕棿30m
+    // 鏂紑杩炴帴
+    connection.onclose(async () => {
+      console.log("鏂紑杩炴帴");
+    });
+
+    //鏂嚎閲嶆柊
+    connection.onreconnected(() => {
+      console.log("鏂嚎閲嶆柊杩炴帴鎴愬姛");
+    });
+    //娑堟伅澶勭悊
+    receiveMsg(connection);
+    return connection;
+  };
+
+  //鎺ユ敹娑堟伅澶勭悊
+  const receiveMsg = (connection) => {
+    //鎺ユ敹鐧诲嚭
+    connection.on("LoginOut", (data) => {
+      // signalrMessage.loginOut(data)
+    });
+
+    connection.on("NewMessage", (data) => {
+      eventBus.emit("stackerDataError", data);
+      if (openedNotification === null || openedNotification.closed) {
+        // 涓婁竴涓狽otification宸插叧闂垨灏氭湭鎵撳紑
+        openedNotification = ElNotification({
+          title: "鎴愬姛",
+          message: data,
+          type: "success",
+          onClose: () => {
+            // Notification宸插叧闂�
+            openedNotification = null; // 娓呯┖褰撳墠鎵撳紑鐨凬otification瀹炰緥
+            console.log("Notification宸插叧闂�");
+          },
+        });
+      }
+    });
+    
+    connection.on("StackerData", (data) => {
+      // console.log(data);
+      eventBus.emit("stackerData", data);
+    });
+    connection.on("LocationData", (data) => {
+      eventBus.emit("locationData", data);
+    });
+  };
+
+  //椤甸潰閿�姣�
+  // onUnmounted(() => {})
+  return { startSignalr };
+}

--
Gitblit v1.9.3