如果两个集线器都托管在同一个应用程序中,您应该能够使用:
GlobalHost.ConnectionManager.GetHubContext<HubB>()
现在的诀窍是,您似乎想向 HubB 上的特定客户端发送消息,问题是Context.ConnectionId
HubA 的 ID 与 HubB 的 ID 不同。因此,您需要做的是从 ConnectionId 到 HubA 和 HubB 中的某种逻辑用户的某种映射。然后,当您需要“弥合差距”时,您可以通过 HubA 的 ConnectionId 从 HubA 查找逻辑用户,然后找到 HubB 的 ConnectionId。此时您的代码可能如下所示:
public void DoSomething(string test)
{
// Get HubB's ConnectionId given HubA's ConnectionId (implementation left to you)
string hubBConnectionId = MapHubAConnectionIdToHubBConnectionId(Context.ConnectionId);
// Get the context for HubB
var hubBContext = GlobalHost.ConnectionManager.GetHubContext<HubB>();
// Invoke the method for just the current caller on HubB
hubBContext.Clients[hubBConnectionId].messageHandler(test);
}