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