- 在客户端配置中添加自定义重连策略:
connection.onreconnecting(() => {
console.log('Connection lost, reconnecting...');
});
connection.onreconnected(() => {
console.log('Connection reestablished.');
});
connection.start({
transport: ['webSockets', 'longPolling'],
reconnectInterval: 5000, //ms
reconnectAttempts: 10, //次
});
- 在后端配置中添加服务端重连设置:
services.AddSignalR(hubOptions =>
{
hubOptions.EnableDetailedErrors = true;
hubOptions.KeepAliveInterval = TimeSpan.FromSeconds(30);
hubOptions.ClientTimeoutInterval = TimeSpan.FromSeconds(60);
})
.AddMessagePackProtocol(options =>
{
options.SerializerOptions = MessagePackSerializerOptions.Standard.WithSecurity(MessagePackSecurity.UntrustedData);
options.Resolver = ContractlessStandardResolver.Instance;
})
.AddRedis(options =>
{
options.Configuration = "localhost:6379,abortConnect=false";
options.InstanceName = "SignalR";
options.ConfigurationOptions.ConnectTimeout = 1000;
options.ConfigurationOptions.SyncTimeout = 1000;
options.ConfigurationOptions.ResponseTimeout = 3000;
options.ConfigurationOptions.ConnectRetry = 5;
options.ConfigurationOptions.ConnectTimeout = 5000;
});