From 772885de35e57e6a2c805ef9274ab0ec874f6d3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Sat, 23 Dec 2023 19:49:17 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20websocket=20?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/layout/index.vue | 12 +++++------- src/utils/websocket.ts | 9 ++++----- 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/src/layout/index.vue b/src/layout/index.vue index 0c1fb17..8fe5554 100644 --- a/src/layout/index.vue +++ b/src/layout/index.vue @@ -26,14 +26,7 @@ import SideBar from './components/Sidebar/index.vue'; import { AppMain, Navbar, Settings, TagsView } from './components'; 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); @@ -73,6 +66,11 @@ onMounted(() => { }); }); +onMounted(() => { + let protocol = window.location.protocol === 'https:' ? 'wss://' : 'ws://'; + initWebSocket(protocol + window.location.host + import.meta.env.VITE_APP_BASE_API + '/resource/websocket'); +}); + const handleClickOutside = () => { useAppStore().closeSideBar({ withoutAnimation: false }); }; diff --git a/src/utils/websocket.ts b/src/utils/websocket.ts index b0c6911..d4dd8a8 100644 --- a/src/utils/websocket.ts +++ b/src/utils/websocket.ts @@ -20,6 +20,7 @@ import { getToken } from '@/utils/auth'; import { ElNotification } from 'element-plus'; +import useNoticeStore from '@/store/modules/notice'; let socketUrl: any = ''; // socket地址 let websocket: any = null; // websocket 实例 @@ -27,14 +28,12 @@ let heartTime: any = null; // 心跳定时器实例 let socketHeart = 0 as number; // 心跳次数 const HeartTimeOut = 10000; // 心跳超时时间 10000 = 10s let socketError = 0 as number; // 错误次数 -let noticeStore: any = null; // 初始化socket -export const initWebSocket = (url: any, store: any) => { +export const initWebSocket = (url: 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); @@ -99,7 +98,7 @@ export const sendSocketHeart = () => { export const reconnect = () => { if (socketError <= 2) { clearInterval(heartTime); - initWebSocket(socketUrl, noticeStore); + initWebSocket(socketUrl); socketError = socketError + 1; // eslint-disable-next-line prettier/prettier console.log('socket重连', socketError); @@ -124,7 +123,7 @@ export const websocketonmessage = () => { if (e.data.indexOf('ping') > 0) { return; } - noticeStore.addNotice({ + useNoticeStore().addNotice({ message: e.data, read: false, time: new Date().toLocaleString()