add 增加 sse 推送功能
This commit is contained in:
		
							
								
								
									
										48
									
								
								src/utils/sse.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								src/utils/sse.ts
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,48 @@ | ||||
| import { getToken } from '@/utils/auth'; | ||||
| import { ElNotification } from 'element-plus'; | ||||
| import useNoticeStore from '@/store/modules/notice'; | ||||
|  | ||||
| let message = ''; | ||||
|  | ||||
| // 初始化 | ||||
| export const initSSE = (url: any) => { | ||||
|   if (import.meta.env.VITE_APP_WEBSOCKET === '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, () => { | ||||
|     if (!data.value) return; | ||||
|     useNoticeStore().addNotice({ | ||||
|       message: data.value, | ||||
|       read: false, | ||||
|       time: new Date().toLocaleString() | ||||
|     }); | ||||
|     ElNotification({ | ||||
|       title: '消息', | ||||
|       message: data.value, | ||||
|       type: 'success', | ||||
|       duration: 3000 | ||||
|     }); | ||||
|     data.value = null; | ||||
|   }); | ||||
| }; | ||||
|  | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 疯狂的狮子Li
					疯狂的狮子Li