update 优化 websocket 代码实现
This commit is contained in:
parent
1d557a24f9
commit
772885de35
@ -26,14 +26,7 @@ import SideBar from './components/Sidebar/index.vue';
|
|||||||
import { AppMain, Navbar, Settings, TagsView } from './components';
|
import { AppMain, Navbar, Settings, TagsView } from './components';
|
||||||
import useAppStore from '@/store/modules/app';
|
import useAppStore from '@/store/modules/app';
|
||||||
import useSettingsStore from '@/store/modules/settings';
|
import useSettingsStore from '@/store/modules/settings';
|
||||||
|
|
||||||
import { initWebSocket } from '@/utils/websocket';
|
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 settingsStore = useSettingsStore();
|
||||||
const theme = computed(() => settingsStore.theme);
|
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 = () => {
|
const handleClickOutside = () => {
|
||||||
useAppStore().closeSideBar({ withoutAnimation: false });
|
useAppStore().closeSideBar({ withoutAnimation: false });
|
||||||
};
|
};
|
||||||
|
@ -20,6 +20,7 @@
|
|||||||
|
|
||||||
import { getToken } from '@/utils/auth';
|
import { getToken } from '@/utils/auth';
|
||||||
import { ElNotification } from 'element-plus';
|
import { ElNotification } from 'element-plus';
|
||||||
|
import useNoticeStore from '@/store/modules/notice';
|
||||||
|
|
||||||
let socketUrl: any = ''; // socket地址
|
let socketUrl: any = ''; // socket地址
|
||||||
let websocket: any = null; // websocket 实例
|
let websocket: any = null; // websocket 实例
|
||||||
@ -27,14 +28,12 @@ let heartTime: any = null; // 心跳定时器实例
|
|||||||
let socketHeart = 0 as number; // 心跳次数
|
let socketHeart = 0 as number; // 心跳次数
|
||||||
const HeartTimeOut = 10000; // 心跳超时时间 10000 = 10s
|
const HeartTimeOut = 10000; // 心跳超时时间 10000 = 10s
|
||||||
let socketError = 0 as number; // 错误次数
|
let socketError = 0 as number; // 错误次数
|
||||||
let noticeStore: any = null;
|
|
||||||
|
|
||||||
// 初始化socket
|
// 初始化socket
|
||||||
export const initWebSocket = (url: any, store: any) => {
|
export const initWebSocket = (url: any) => {
|
||||||
if (import.meta.env.VITE_APP_WEBSOCKET === 'false') {
|
if (import.meta.env.VITE_APP_WEBSOCKET === 'false') {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
noticeStore = store;
|
|
||||||
socketUrl = url;
|
socketUrl = url;
|
||||||
// 初始化 websocket
|
// 初始化 websocket
|
||||||
websocket = new WebSocket(url + '?Authorization=Bearer ' + getToken() + '&clientid=' + import.meta.env.VITE_APP_CLIENT_ID);
|
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 = () => {
|
export const reconnect = () => {
|
||||||
if (socketError <= 2) {
|
if (socketError <= 2) {
|
||||||
clearInterval(heartTime);
|
clearInterval(heartTime);
|
||||||
initWebSocket(socketUrl, noticeStore);
|
initWebSocket(socketUrl);
|
||||||
socketError = socketError + 1;
|
socketError = socketError + 1;
|
||||||
// eslint-disable-next-line prettier/prettier
|
// eslint-disable-next-line prettier/prettier
|
||||||
console.log('socket重连', socketError);
|
console.log('socket重连', socketError);
|
||||||
@ -124,7 +123,7 @@ export const websocketonmessage = () => {
|
|||||||
if (e.data.indexOf('ping') > 0) {
|
if (e.data.indexOf('ping') > 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
noticeStore.addNotice({
|
useNoticeStore().addNotice({
|
||||||
message: e.data,
|
message: e.data,
|
||||||
read: false,
|
read: false,
|
||||||
time: new Date().toLocaleString()
|
time: new Date().toLocaleString()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user