【问题标题】:How to have multiple SignalR hub on one page如何在一页上有多个 SignalR 集线器
【发布时间】:2014-06-12 21:18:34
【问题描述】:

我有一个 SignalR 集线器,用于管理一种类型的消息传递。我需要在同一页面上添加第二个集线器,它只是发布消息并返回给其余客户和发布的消息。

一个连接是否可以有多个集线器?问题是,如果一个集线器先于其他集线器启动,如果第一个集线器已经开始连接,我该如何连接或订阅当前集线器?

它们都是消息传递类型的集线器,但可以使用一个或多个。

我该如何处理?

AlumCloud

【问题讨论】:

  • 爱用户名

标签: javascript jquery signalr


【解决方案1】:

要让一个页面有多个中心,您不需要做任何特别的事情,只需创建另一个中心类。

为确保您通常可以从集线器接收消息,请确保您在开始连接之前已为集线器注册了客户端方法。

因此,如果您想使用多个集线器,您需要做的就是在开始连接之前为要订阅的集线器设置客户端方法。

无论您订阅了多少个集线器,它们都使用一个非常好的连接:)。

要解决您希望在连接启动后“订阅”集线器的问题,您不能这样做。另一种方法是始终订阅两个集线器并使用组来控制数据的发送位置。您可以在此处了解有关群组的更多信息:http://www.asp.net/signalr/overview/signalr-20/hubs-api/working-with-groups

【讨论】:

  • 是的,一旦你得到这个概念,它真的很棒。我只需要创建并弄清楚如何在连接开始之前订阅我所有的客户端代码。 iframe 是否可以使用具有单独连接的单独集线器?
  • 哈哈,你可以采用这种方法,但它似乎有点矫枉过正。
  • 在开始连接之前您需要订阅所有客户端方法并不完全正确。连接开始后,您可以使用“不生成代理”来执行此操作。有关详细信息,请参阅 asp.net/signalr/overview/signalr-20/hubs-api/… 的 SignalR 指南。
  • 如果你想在连接开始后订阅一个集线器,你可以调用$.connection.hub.stop()然后再次调用$.connection.hub.start(),它将拥有新的集线器。
猜你喜欢
  • 2014-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多