wxw
8 天以前 6a738089d6471d048c32ce7f3dcbd15c935ada79
Web/src/views/device/deviceInfo/signalR.ts
New file
@@ -0,0 +1,37 @@
import * as SignalR from '@microsoft/signalr';
import { getToken } from '/@/utils/axios-utils';
// 初始化SignalR对象
const connection = new SignalR.HubConnectionBuilder()
   .configureLogging(SignalR.LogLevel.Information)
   .withUrl(`${window.__env__.VITE_API_URL}/hubs/Plc?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('启动连接plc');
});
// 断开连接
connection.onclose(async () => {
   console.log('断开连接plc');
});
// 重连中
connection.onreconnecting(() => {
   console.log('服务器已断线plc');
});
// 重连成功
connection.onreconnected(() => {
   console.log('重连成功plc');
});
// connection.on('PublicPlcConn', () => {});
export { connection as signalR };