zhangwei
4 天以前 91b116baef5c74909a59c7f13438dd4a0ad12bed
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
import * as SignalR from '@microsoft/signalr';
import { ElNotification } from 'element-plus';
import { getToken } from '/@/utils/axios-utils';
 
// 初始化SignalR对象
const connection = new SignalR.HubConnectionBuilder()
    .configureLogging(SignalR.LogLevel.Information)
    .withUrl(`${window.__env__.VITE_API_URL}/hubs/onlineUser?token=${getToken()}`, { transport: SignalR.HttpTransportType.WebSockets, skipNegotiation: true })
    .withAutomaticReconnect({
        nextRetryDelayInMilliseconds: () => {
            return 5000; // 每5秒重连一次
        },
    })
    .build();
 
connection.keepAliveIntervalInMilliseconds = 15 * 1000; // 心跳检测15s
connection.serverTimeoutInMilliseconds = 30 * 60 * 1000; // 超时时间30m
 
// 启动连接
connection.start().then(() => {
    console.log('启动连接');
});
// 断开连接
connection.onclose(async () => {
    console.log('断开连接');
});
// 重连中
connection.onreconnecting(() => {
    ElNotification({
        title: '提示',
        message: '服务器已断线...',
        type: 'error',
        position: 'bottom-right',
    });
});
// 重连成功
connection.onreconnected(() => {
    console.log('重连成功');
});
 
connection.on('OnlineUserList', () => {});
 
export { connection as signalR };