Signalr 是否更改 connectionId OnReconnected 方法?

Does Signalr change connectionId OnReconnected method?

我想知道 signalr 是否更改了 OnReconnected 方法上的 connectionId?因为我正在将用户列表映射到他们的连接 ID,所以如果由于连接速度慢而在服务器上引发重新连接事件,connectionId 是否会更改?

我不相信 OnReconnect 会改变 connectionID。但是,这取决于问题的原因。

如果客户端断开了它的 Internet 连接,然后重新连接,OnReconnect 将触发并且用户应该具有相同的 connectionID。

如果服务器重新启动或 IIS 重新启动,则情况不同,当您的客户端刷新时,它将显示为 OnConnect 并获得新的连接 ID。

没有。 connectionId 在 OnReconnected 事件中不会改变。

  • OnReconnected 在断开连接超时内自动触发(如果您使用的是 signalR 客户端),以防出现网络问题并且错过保持活动状态。
  • 如果网络中断或服务器无法处理 OnReconnected 事件的时间超过断开超时时间,则服务器上的连接将断开,需要建立新的连接。建立新连接不是自动的。客户端代码必须调用 connection.Start() 来创建新连接。
  • 如果客户端返回旧的 connectionId,它将不会通过,因为该连接将处于断开连接状态。

因此,如果您将 connectionID 与用户映射,则需要确保在每个 OnConnected 事件 中使用新的 connectionId 更新连接 ID 并删除 在服务器上的每个 OnDisconnected 事件 中。