From 597f2b4461eb38626cfcfc243ca0eefaf076069c 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:38:34 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=20websocket=20?= =?UTF-8?q?=E9=9D=9Eindex=E9=A1=B5=E9=9D=A2=E5=88=B7=E6=96=B0=E6=97=A0?= =?UTF-8?q?=E6=B3=95=E9=87=8D=E8=BF=9E=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/layout/index.vue | 8 ++++++++ src/utils/websocket.ts | 11 +++++------ src/views/index.vue | 7 ------- 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 { 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); 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,23 +19,22 @@ */ 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 实例 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) => { +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 sendSocketHeart = () => { 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 @@ export const websocketonmessage = () => { 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 @@