From 597f2b4461eb38626cfcfc243ca0eefaf076069c Mon Sep 17 00:00:00 2001 From: 疯狂的狮子Li <15040126243@163.com> Date: 星期六, 23 十二月 2023 19:38:34 +0800 Subject: [PATCH] fix 修复 websocket 非index页面刷新无法重连问题 --- src/views/index.vue | 7 ------- src/layout/index.vue | 8 ++++++++ src/utils/websocket.ts | 11 +++++------ 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/layout/index.vue b/src/layout/index.vue index fa43e69..0c1fb17 100644 --- a/src/layout/index.vue +++ b/src/layout/index.vue @@ -27,6 +27,14 @@ import useAppStore from '@/store/modules/app'; import useSettingsStore from '@/store/modules/settings'; +import { initWebSocket } from '@/utils/websocket'; +import useNoticeStore from '@/store/modules/notice'; + +onMounted(() => { + let protocol = window.location.protocol === 'https:' ? 'wss://' : 'ws://'; + initWebSocket(protocol + window.location.host + import.meta.env.VITE_APP_BASE_API + '/resource/websocket', useNoticeStore()); +}); + const settingsStore = useSettingsStore(); const theme = computed(() => settingsStore.theme); const sidebar = computed(() => useAppStore().sidebar); diff --git a/src/utils/websocket.ts b/src/utils/websocket.ts index 7add725..b0c6911 100644 --- a/src/utils/websocket.ts +++ b/src/utils/websocket.ts @@ -19,10 +19,7 @@ */ import { getToken } from '@/utils/auth'; -import useNoticeStore from '@/store/modules/notice'; import { ElNotification } from 'element-plus'; - -const { addNotice } = useNoticeStore(); let socketUrl: any = ''; // socket鍦板潃 let websocket: any = null; // websocket 瀹炰緥 @@ -30,12 +27,14 @@ let socketHeart = 0 as number; // 蹇冭烦娆℃暟 const HeartTimeOut = 10000; // 蹇冭烦瓒呮椂鏃堕棿 10000 = 10s let socketError = 0 as number; // 閿欒娆℃暟 +let noticeStore: any = null; // 鍒濆鍖杝ocket -export const initWebSocket = (url: any) => { +export const initWebSocket = (url: any, store: any) => { if (import.meta.env.VITE_APP_WEBSOCKET === 'false') { return; } + noticeStore = store; socketUrl = url; // 鍒濆鍖� websocket websocket = new WebSocket(url + '?Authorization=Bearer ' + getToken() + '&clientid=' + import.meta.env.VITE_APP_CLIENT_ID); @@ -100,7 +99,7 @@ export const reconnect = () => { if (socketError <= 2) { clearInterval(heartTime); - initWebSocket(socketUrl); + initWebSocket(socketUrl, noticeStore); socketError = socketError + 1; // eslint-disable-next-line prettier/prettier console.log('socket閲嶈繛', socketError); @@ -125,7 +124,7 @@ if (e.data.indexOf('ping') > 0) { return; } - addNotice({ + noticeStore.addNotice({ message: e.data, read: false, time: new Date().toLocaleString() diff --git a/src/views/index.vue b/src/views/index.vue index 57c5373..3f853a3 100644 --- a/src/views/index.vue +++ b/src/views/index.vue @@ -96,13 +96,6 @@ </template> <script setup name="Index" lang="ts"> -import { initWebSocket } from '@/utils/websocket'; - -onMounted(() => { - let protocol = window.location.protocol === 'https:' ? 'wss://' : 'ws://'; - initWebSocket(protocol + window.location.host + import.meta.env.VITE_APP_BASE_API + '/resource/websocket'); -}); - const goTarget = (url: string) => { window.open(url, '__blank'); }; -- Gitblit v1.9.3