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
假设我的 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