SignalR:是否只能为特定集线器调用集线器的 OnDissconnect 事件?

SignalR: Does OnDissconnect event of a hub can be called only for a specific hub?

假设我的 SignalR 应用程序上有 2 个集线器。 我在本地缓存字典上映射 connectionIds -> userIds。

现在的逻辑是这样的:

使用 OnConnected --> 向字典添加一个新的 "connectionId to userId" 条目(如果它不存在)。

使用 OnDisconnected --> 从字典中删除 "connectionId to userId" 条目(如果存在)

是否存在 Hub1 断开连接而 Hub2 保持连接的情况?

如果是这样,我当前的逻辑是有缺陷的,因为它会从字典中删除条目,即使 Hub2 仍处于连接状态。解决这个问题需要我为每个集线器处理 2 个词典。

P.S。我查看了用于处理连接映射的 SignalR 文档,它们似乎总是在每个集线器上使用一个字典。所以我想知道是否真的有必要。

根据文档,Signalr 为多个集线器共享一个连接。因此,如果您收到对 OnDisconnect 的调用,则您所有的集线器都应该断开连接。

SignalR 2.0 was updated to handle multiple hubs over one signlar connection with no lost in performance.

http://www.asp.net/signalr/overview/guide-to-the-api/hubs-api-guide-server#multiplehubs