import { getToken } from '@/utils/auth'; import { ElNotification } from 'element-plus'; import useNoticeStore from '@/store/modules/notice'; // 初始化 export const initSSE = (url: any) => { if (import.meta.env.VITE_APP_SSE === 'false') { return; } url = url + '?Authorization=Bearer ' + getToken() + '&clientid=' + import.meta.env.VITE_APP_CLIENT_ID; const { data, error } = useEventSource(url, [], { autoReconnect: { retries: 10, delay: 3000, onFailed() { console.log('Failed to connect after 10 retries'); } } }); watch(error, () => { console.log('SSE connection error:', error.value); error.value = null; }); watch(data, () => { console.log(data.value); let label = ''; let route1 = ''; let detailId = ''; try { if (JSON.parse(data.value)) { const obj = JSON.parse(data.value); route1 = obj.route; label = obj.message; detailId = obj.detailId; data.value = null; } } catch (error) { label = data.value; } if (!label) return; useNoticeStore().addNotice({ message: label, read: false, time: new Date().toLocaleString(), route: route1, detailId: detailId }); ElNotification({ title: '消息', message: label, type: 'success', duration: 3000 }); data.value = null; }); };