diff --git a/web/src/main.ts b/web/src/main.ts index 3e61355a49ee40ee361ec5233b79461f8c99685e..6b90b23f25b47be87195102639b504447a38307a 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 06b8642312b2d72edda736672c32adffdbc0f774..9b2b69ae7a5b1e40176cf31f466d5ae8ab3b1947 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 40b440e2066aefd845a53db64f5e554bf2027db2..ffc42cf0f48a1e76b604ee40246adc493d099534 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 bab31c627933fce6e54ef8baeb8a3e4fa844ae0f..5de7acb56136e19261fdd9464dca020c989ed359 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)