This document是了解SignalR生命事件和状态的良好开端。但似乎缺少一些东西:如何确定connectionSlow
切换回正常状态的时刻?
我希望在ConnectionSlow
事件被触发时向用户显示一条消息。但我不知道何时隐藏此消息:
reconnecting
事件被触发,没问题:我只需要等待Reconnected
事件或Closed
事件,然后隐藏消息或显示致命错误。< / LI>
reconnecting
事件未被触发,可能是因为连接被返回到&#34;健康&#34;状态而不必重新连接==&gt;我应该用什么来识别这个?我开始使用HubConnection
类及其StateChanged
事件,但ConnectionState
枚举没有ConnectionSlow
状态。
答案 0 :(得分:3)
正如您所注意到的,ConnectionSlow不是一个州,它只是一个事件,表明SignalR客户端已经错过了预期的保持活动消息。
默认情况下,如果客户端在触发ConnectionSlow后约7秒内未收到任何保持活动,则它将开始尝试重新连接。因此,如果客户端在ConnectionSlow触发后的10秒内没有开始重新连接,您可以安全地假设在ConnectionSlow触发后SignalR收到了保持活动状态。
这并不一定意味着连接不再缓慢,但它确实意味着在再次触发ConnectionSlow之前,SignalR将等待另外约13秒而不接收另一个保持活动状态。这意味着在SignalR自动尝试重新连接之前,它总共需要大约20秒而没有保持活动状态。使用SignalR的默认10秒保持活动间隔来计算所有这些数字。
SignalR's documentation on the Understanding and Handling Connection Lifetime Events更深入。