当客户端脱机然后不久后重新获得连接时,就会发生集线器重新连接。 SignalR配置值在很大程度上决定了以下示例的时间戳,因此无需逐字记录时间。
以下是一些示例及其涉及重新连接行为的结果(时间格式:m:ss):
当我提到以下内容时,我指的是服务器端Hub方法
联机
断开连接
OnReconnected
1)
0:00-客户端连接到服务器,触发OnConnected
0:10-客户端由于ISP问题而失去连接(并意识到它失去了连接)
0:15-客户端重新获得连接
0:16-触发OnReconnected事件
2)
0:00-客户端连接到服务器,触发OnConnected
0:10-客户端由于拉以太网电缆而失去连接(未意识到已断开连接)
0:15-客户端重新获得连接
这里可能发生两件事
A: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-触发了OnDisconnected
1:16-客户端重新获得连接
1:17-客户端进行“软”重新连接(不会触发OnReconnected)
1:18-客户端检索“断开连接”命令
1:19-客户端呼叫“停止”并进行软断开连接(不会触发OnDisconnected)
4)
0:00-客户端连接到服务器,触发OnConnected
0:10-客户端由于拉以太网电缆而失去连接(未意识到已断开连接)
0:〜45-客户端意识到其断开连接*
0:46-客户端转换为重新连接状态
1:15-服务器确定客户端已离开太久,然后忘记了这一点,排队一个“断开连接”命令,以便客户端稍晚重新连接时可以接收。 ***
1:15-触发了OnDisconnected
1:30-客户端停止尝试重新连接(尝试时间过长)**
1:30-客户端转换为断开状态
*由于客户端保持活动状态检查:用于确定客户端由于缺少保持活动状态而脱机的时间。 不用于长轮询运输
**由于客户端断开连接超时:用于确定客户端重新连接的时间过长,以及服务器在这段时间内是否忘记了客户端
***由于服务器断开连接超时:用于确定何时应该忘记客户端。 一旦在服务器上将连接标记为无效后,这个时间跨度就会开始累积。 最终,服务器在客户端主题的断开连接队列中排队,该命令告诉客户端(如果重新连接)它需要开始新的连接。 清理主题后,该命令将从服务器中消失。
希望这可以帮助!