From 7abfa0ec4bc1a992f2cb6cd1723c9b49d288fc0c Mon Sep 17 00:00:00 2001 From: "Ray.Hao" <1490493387@qq.com> Date: Wed, 11 Jun 2025 23:44:31 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20:bug:=20=E8=A7=A3=E5=86=B3WebSocket?= =?UTF-8?q?=E6=A8=A1=E5=9D=97=E5=AF=BC=E5=85=A5=E5=86=B2=E7=AA=81=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/plugins/websocket.ts | 26 +------------------------- src/store/modules/user.store.ts | 12 +++--------- 2 files changed, 4 insertions(+), 34 deletions(-) diff --git a/src/plugins/websocket.ts b/src/plugins/websocket.ts index b843aa12..692d457a 100644 --- a/src/plugins/websocket.ts +++ b/src/plugins/websocket.ts @@ -1,7 +1,6 @@ import { useDictSync } from "@/composables/useDictSync"; import { Auth } from "@/utils/auth"; -import { useUserStore } from "@/store"; -import { watch } from "vue"; +// 不直接导入 store 或 userStore // 全局 WebSocket 实例管理 const websocketInstances = new Map(); @@ -73,9 +72,6 @@ export function setupWebSocket() { // 在窗口关闭前断开WebSocket连接 window.addEventListener("beforeunload", handleWindowClose); - // 监听用户注销事件 - watchUserLogout(); - console.log("[WebSocketPlugin] WebSocket服务初始化完成"); isInitialized = true; }, 1000); // 延迟1秒初始化 @@ -92,26 +88,6 @@ function handleWindowClose() { cleanupWebSocket(); } -/** - * 监听用户注销 - */ -function watchUserLogout() { - const userStore = useUserStore(); - - // 监听用户信息变化,当用户信息被清空时断开连接 - watch( - () => userStore.userInfo, - (newUserInfo, oldUserInfo) => { - // 从有用户信息变为无用户信息,说明用户注销了 - if (oldUserInfo?.username && !newUserInfo?.username) { - console.log("[WebSocketPlugin] 检测到用户注销,断开WebSocket连接"); - cleanupWebSocket(); - } - }, - { deep: true } - ); -} - /** * 清理WebSocket连接 */ diff --git a/src/store/modules/user.store.ts b/src/store/modules/user.store.ts index 8a0b1235..899897f6 100644 --- a/src/store/modules/user.store.ts +++ b/src/store/modules/user.store.ts @@ -7,6 +7,7 @@ import { Auth } from "@/utils/auth"; import { usePermissionStoreHook } from "@/store/modules/permission.store"; import { useDictStoreHook } from "@/store/modules/dict.store"; import { useTagsViewStore } from "@/store"; +import { cleanupWebSocket } from "@/plugins/websocket"; export const useUserStore = defineStore("user", () => { const userInfo = useStorage("userInfo", {} as UserInfo); @@ -91,15 +92,8 @@ export const useUserStore = defineStore("user", () => { useTagsViewStore().delAllViews(); // 3. 清理 WebSocket 连接 - // 动态导入避免循环依赖 - import("@/plugins/websocket") - .then(({ cleanupWebSocket }) => { - cleanupWebSocket(); - console.log("[UserStore] WebSocket connections cleaned up"); - }) - .catch((error) => { - console.error("[UserStore] Failed to cleanup WebSocket:", error); - }); + cleanupWebSocket(); + console.log("[UserStore] WebSocket connections cleaned up"); return Promise.resolve(); }