如何在一个页面上拥有多个SignalR中心?

8
我有一个管理一种类型消息的SignalR中心。我需要添加第二个中心到同一页,它只是发布消息并将其返回给其余客户端和已发布的消息。
是否可以为一个连接拥有多个中心?问题在于如果一个中心在其他中心之前启动,如果第一个中心已经启动了连接,如何连接或订阅当前中心?
它们都是消息中心,但可能会使用其中之一。
我该如何处理这个问题? AlumCloud

喜欢这个用户名 - JacobIRR
1个回答

16
要在同一页上使用多个信号中心,您无需做任何特殊操作,只需创建另一个信号中心类即可。
要确保可以接收到来自信号中心的消息,请在启动连接之前为信号中心注册客户端方法。
因此,如果您想使用多个信号中心,您需要在启动连接之前为希望订阅的信号中心创建客户端方法。
无论您订阅了多少个信号中心,它们都使用一个连接,这非常好 : )。
要解决您想要在连接后“订阅”信号中心的问题,是不行的。另一种选择是始终订阅两个信号中心,并使用组来控制数据发送的位置。您可以在此处了解有关组的更多信息:http://www.asp.net/signalr/overview/signalr-20/hubs-api/working-with-groups

是的,一旦你掌握了这个概念,它真的很好。我只需要创造性地想出如何在连接开始之前订阅所有客户端代码。使用iframe是否可以有单独的连接和分离的中心? - Filling The Stack is What I DO
哈哈,你可以采用那种方法,不过似乎有点过头了。 - N. Taylor Mullen
1
并不完全是真的,您需要在启动连接之前订阅所有客户端方法。您可以在连接启动后使用“无生成代理”来完成此操作。有关详细信息,请参阅SignalR指南http://www.asp.net/signalr/overview/signalr-20/hubs-api/hubs-api-guide-server。 - newman
1
如果您想在连接启动后订阅一个中心,您可以调用$.connection.hub.stop()然后再次调用$.connection.hub.start(),这将拥有新的中心。 - LongZheng

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接