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

Mapping 信令器:是否只能为特定集线器调用集线器的OnDissconnect事件?,mapping,signalr,connection,Mapping,Signalr,Connection,假设我的信号器应用程序上有2个集线器。 我正在本地缓存字典上映射connectionsIds->UserId 当前的逻辑是这样的: 使用OnConnected-->将新的“connectionId to userId”条目添加到字典中(如果不存在) 使用OnDisconnected-->从字典中删除“connectionId to userId”条目(如果存在) 是否存在Hub1断开而Hub2保持连接的情况 如果是这样的话,我当前的逻辑是有缺陷的,因为它将从字典中删除条目,即使Hub2仍然连接。

假设我的信号器应用程序上有2个集线器。 我正在本地缓存字典上映射connectionsIds->UserId

当前的逻辑是这样的:

使用OnConnected-->将新的“connectionId to userId”条目添加到字典中(如果不存在)

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

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

如果是这样的话,我当前的逻辑是有缺陷的,因为它将从字典中删除条目,即使Hub2仍然连接。要解决这个问题,我需要为每个中心处理2个字典


另外,我已经看过处理连接映射的signar文档,它们似乎总是在每个中心使用一个字典。所以我想知道这是否真的有必要

根据文件,信号机为多个集线器共享一个连接。因此,如果您接到OnDisconnect的呼叫,您的所有集线器都应该断开连接

SignalR 2.0经过更新,可以在一个signlar上处理多个集线器 没有性能损失的连接


你好。只是一个建议,您可以考虑使用单用户组来保持此映射。它更容易实现,而且您不必为维护字典而感到压力。检查非常优雅的解决方案!我想我会走那条路。谢谢你说的对,我已经查看了HubDispatcher类的代码,该函数获取所有集线器并在所有连接的集线器上执行断开连接事件。ASP.NET Core现在每个集线器使用一个连接,这是一个问题,因为在iOS上有4个连接的限制,呃。