c# - 如何检查最后一次自动重连是否完成?
问题描述
我正在创建一个集线器客户端,如下所示:
hub = new HubConnectionBuilder()
.WithUrl(Constants.HubsUrl + "/MainHub", options =>
{
options.Headers.Add(Constants.HeaderToken, token);
options.UseDefaultCredentials = true;
})
.ConfigureLogging(logging =>
{
logging.AddDebug();
logging.SetMinimumLevel(Microsoft.Extensions.Logging.LogLevel.Warning);
})
.WithAutomaticReconnect(new[] {
TimeSpan.Zero,
TimeSpan.FromSeconds(5),
TimeSpan.FromSeconds(30),
TimeSpan.FromMinutes(1),
TimeSpan.FromMinutes(5)
})
.Build();
hub.Closed += (exception) =>
{
Closed?.Invoke(this, new EventArgs());
if (exception == null)
{
Console.WriteLine("Connection closed without error.");
}
else
{
Console.WriteLine($"Connection closed due to an error: {exception}");
}
return Task.CompletedTask;
};
这一切都很好。
但是我想知道最后一次重新连接尝试是否已完成,以便我可以向用户显示一条消息。
我需要用老式的柜台方式来做,还是有更好的解决方案?
解决方案
在你hub
身上,你有重新连接的事件。
只需附加到它并从那里进行通知。因此,除了您的hub.Closed += [...]
,您还将拥有以下内容:
hub.Reconnected += (connectionId) => Console.WriteLine($"Successfully reconnected. ({connectionId})");
如果您还想显示正在尝试重新连接,则可以使用Reconnecting事件。
推荐阅读
- opencv - 如何在“图像”中模拟高斯噪声峰值
- c++ - 类外的类函数模板定义
- elasticsearch - Elastic Search 中的 $pull 和 $push 查询
- python - 你如何使用python找到前x个素数?
- angular - 在 Angular 离子应用程序上安装和运行滚动魔法
- c++ - 根据派生类的大小创建一个数组
- c++ - 如何使用管道通过文件在父子之间共享数据?
- java - Java注释处理器不在生成的源中生成文件
- powershell - 如何在powershell中读取machine.config并检查是否存在密钥
- javascript - 在 Angular 中调用远程 URL 时出现 CORS 策略错误