1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
| import { getToken } from '@/utils/auth';
| import { ElNotification } from 'element-plus';
| import useNoticeStore from '@/store/modules/notice';
|
| // 初始化socket
| export const initWebSocket = (url: any) => {
| if (import.meta.env.VITE_APP_WEBSOCKET === 'false') {
| return;
| }
| url = url + '?Authorization=Bearer ' + getToken() + '&clientid=' + import.meta.env.VITE_APP_CLIENT_ID;
| useWebSocket(url, {
| autoReconnect: {
| // 重连最大次数
| retries: 3,
| // 重连间隔
| delay: 1000,
| onFailed() {
| console.log('websocket重连失败');
| }
| },
| heartbeat: {
| message: JSON.stringify({ type: 'ping' }),
| // 发送心跳的间隔
| interval: 10000,
| // 接收到心跳response的超时时间
| pongTimeout: 2000
| },
| onConnected() {
| console.log('websocket已经连接');
| },
| onDisconnected() {
| console.log('websocket已经断开');
| },
| onMessage: (_, e) => {
| if (e.data.indexOf('ping') > 0) {
| return;
| }
| useNoticeStore().addNotice({
| message: e.data,
| read: false,
| time: new Date().toLocaleString()
| });
| ElNotification({
| title: '消息',
| message: e.data,
| type: 'success',
| duration: 3000
| });
| }
| });
| };
|
|