通过GlobalHost
类,使用SignalRConnectionId获取对客户端的引用非常简单。有没有办法获得与该客户端/连接关联的集线器实例的引用?换句话说,给定客户端连接Guid,我是否可以获得与该客户端通信的集线器实例的引用?我想这样做的原因是我可以从服务器中的其他位置调用集线器上的实例方法。
答案 0 :(得分:2)
无法从SignalR Hub pipeline或Hub本身之外获取Hub实例。
在SignalR中,集线器是短暂的。通常,为每次调用实例化一个新的Hub,然后立即处理。
这意味着单个WebSocket连接在其生命周期内可以具有任意数量的关联Hub实例。此外,除非有正在进行的调用,否则甚至不存在相关的Hub。
我建议使用以IHubContext
作为参数的静态方法复制要调用的Hub实例方法。您可以使用GlobalHost.ConnectionManager.GetHubContext获取IHubContext
。