From 48c89c5bcf10716b429784a8bbddccbc91ed74e8 Mon Sep 17 00:00:00 2001 From: fairy Date: Mon, 18 Nov 2024 14:05:32 +0800 Subject: [PATCH] fix:put websocket clientId into the cache --- web/src/main.ts | 6 ++++++ web/src/request/api.ts | 3 ++- web/src/stores/log.ts | 3 ++- web/src/utils/socket.ts | 7 ++++--- 4 files changed, 14 insertions(+), 5 deletions(-) diff --git a/web/src/main.ts b/web/src/main.ts index 3e61355..6b90b23 100755 --- a/web/src/main.ts +++ b/web/src/main.ts @@ -9,6 +9,7 @@ import App from './App.vue' import router from './router' import VueGridLayout from 'vue-grid-layout' import pinia from '@/stores/persist' +import { useLogStore } from './stores/log' const app = createApp(App) @@ -22,3 +23,8 @@ for (const [key, component] of Object.entries(ElementPlusIconsVue)) { } router.isReady().then(() => app.mount('#app')) + +// 监听应用卸载生命周期 +window.addEventListener('unmount',() => { + useLogStore().clientId = 0; +}) diff --git a/web/src/request/api.ts b/web/src/request/api.ts index 06b8642..9b2b69a 100755 --- a/web/src/request/api.ts +++ b/web/src/request/api.ts @@ -1,3 +1,4 @@ +import { useLogStore } from '@/stores/log'; import request from './request'; let baseURL = '/plugin/topology'; // 请求批次信息 @@ -59,7 +60,7 @@ export function getCustomTopo(data: { id: number }) { return request({ url: baseURL+'/api/run_custom_topo', method: 'get', - params: {...data,'clientId':`${parseInt(Math.random() * 1000 + '')}`} + params: {...data,'clientId':useLogStore().clientId} }) } diff --git a/web/src/stores/log.ts b/web/src/stores/log.ts index 40b440e..ffc42cf 100644 --- a/web/src/stores/log.ts +++ b/web/src/stores/log.ts @@ -10,6 +10,7 @@ interface LogSearchList { export const useLogStore = defineStore('log', () => { const search_list = ref([] as LogSearchList[]); const ws_isOpen = ref(false); + const clientId = ref(parseInt(Math.random() * 100000+'')); // websocket标识id,初始化为随机数 const updateLogList = (param:any) => { let ip_index = search_list.value.findIndex(item => item.ip === param.ip); ip_index !== -1 ? search_list.value[ip_index] = param : search_list.value.push(param); @@ -19,5 +20,5 @@ export const useLogStore = defineStore('log', () => { search_list.value = []; ws_isOpen.value = false; } - return {ws_isOpen,search_list,updateLogList,$reset} + return {clientId,ws_isOpen,search_list,updateLogList,$reset} }) \ No newline at end of file diff --git a/web/src/utils/socket.ts b/web/src/utils/socket.ts index bab31c6..5de7acb 100644 --- a/web/src/utils/socket.ts +++ b/web/src/utils/socket.ts @@ -19,9 +19,10 @@ interface socket { close: () => void reconnect: () => void } + const socket: socket = { websocket: null, - connectURL: `wss://10.41.107.29:8888/plugin/ws/logs`, + connectURL: `wss://10.41.161.101:8888/plugin/ws/logs`, // 开启标识 socket_open: false, // 心跳timer @@ -50,8 +51,8 @@ const socket: socket = { /* if (socket.websocket) { return socket.websocket } */ - let random = parseInt(Math.random() * 100000+''); - socket.websocket = new WebSocket(socket.connectURL+`?clientId=${random}`) + + socket.websocket = new WebSocket(socket.connectURL+`?clientId=${useLogStore().clientId}`) socket.websocket.onmessage = (e: any) => { if (receiveMessage) { receiveMessage(e) -- Gitee