smi*_*tra 17 signalr signalr-hub signalr.client
我们遇到了这个指定不同超时属性的链接:https: //github.com/SignalR/SignalR/wiki/Configuring-SignalR
还有一个很好的帖子(什么时候重新连接signalR会出现?)关于SignalR客户端和SignalR服务器之间如何断开连接和重新连接.
只是为了重复上述帖子中的不同情况:
"当客户端脱机然后不久重新获得连接时,就会发生集线器重新连接.SignalR配置值很大程度上决定了以下示例的时间戳,因此不要逐字记录时间.
以下是几个涉及重新连接行为的示例及其结果(时间格式m:ss):
情况1
0:00 - 客户端连接到服务器,触发OnConnected
0:10 - 由于ISP问题,客户端失去连接(并意识到它失去了连接)
0:15 - 客户重获连接
0:16 - 触发OnReconnected事件
情况2
0:00 - 客户端连接到服务器,触发OnConnected
0:10 - 由于拔出以太网电缆,客户端失去连接(未意识到它已断开连接)
0:15 - 客户重获连接
这里可能发生两件事
答:0:16 - 没有任何反应,客户继续使用之前的连接
B:0:~45 - 客户端实现断开连接*
B:0:46-客户端转换到重新连接状态
B:0:47 - 客户端成功重新连接并触发OnReconnected事件.
情况3
0:00 - 客户端连接到服务器,触发OnConnected
0:10 - 由于拔出以太网电缆,客户端失去连接(未意识到它已断开连接)
0:~45 - 客户实现其断开连接*
0:46 - 客户端转换到重新连接状态
1:15 - 服务器确定客户端已经消失了太长时间然后忘记它,排队一个"断开连接"命令,让客户端接收它,如果它稍后重新连接.***
1:15 - OnDisconnect以1:16触发 - 客户重新获得连接
1:17 - 客户端进行"软"重新连接(不触发OnReconnected)
1:18 - 客户端检索"disconnect"命令
1:19 - 客户端调用"停止"并进行软断开(不触发OnDisconnected)
情况4
0:00 - 客户端连接到服务器,触发OnConnected
0:10 - 由于拔出以太网电缆,客户端失去连接(未意识到它已断开连接)
0:~45 - 客户实现其断开连接*
0:46 - 客户端转换到重新连接状态
1:15 - 服务器确定客户端已经消失了太长时间然后忘记它,排队一个"断开连接"命令,让客户端接收它,如果它稍后重新连接.***
1:15 - OnDisconnect在1:30触发 - 客户端停止尝试重新连接(尝试时间过长)**
1:30 - 客户端转换为断开状态
**由于客户端断开超时:用于确定客户端何时重新连接太长时间并且服务器可能在此期间忘记了客户端
***由于服务器断开超时:用于确定何时应该忘记客户端.一旦连接在服务器上被标记为死亡,它就会开始累积.最终,服务器为客户端的主题排队断开命令,该命令告诉客户端(如果它重新连接)它需要启动新连接.当主题被清理时,该命令将从服务器中消失."
我们发现,我们在.NET SignalR客户端和ASP.NET MVC SignalR服务器之间经常断开连接并重新连接(上面的1和2),并断开不会导致重新连接的连接(上面的3和4).我们知道正在使用ServerSentEvents协议.
我们很难知道调整(增加或减少)所需的超时属性:
这里要注意的一件重要事情是我们的.NET SignalR Client实际上是一个连接到服务器的Windows服务.
我们目前只保留默认值,即:
此外,我们正在使用SignalR 1.0.1.
.NET客户端还没有这种行为.如果客户端突然断开连接,它将不会重新连接.它将在1.1.
您的超时设置正确.在当前版本中,.net客户端没有客户端保持活动状态,以确保客户端保持连接.
在下一个版本中,您将有一个.net客户端保持活着.如果您愿意使用该项目的开发版本,则该功能目前可在开发分支https://github.com/SignalR/SignalR/tree/dev上获得.
另外参考,这是与您所看到的相关的问题https://github.com/SignalR/SignalR/issues/741.
| 归档时间: |
|
| 查看次数: |
20963 次 |
| 最近记录: |