Signalr 决定要连接到哪个信号集线器

Signalr 决定要连接到哪个信号集线器,signalr,signalr-hub,Signalr,Signalr Hub,我对决定连接哪个集线器或不使用信号器的规则感到困惑 在javascript中,如果我编写$.connection.hub.start(),并说我有两个集线器(hub1和hub2),那么哪个集线器连接?或者两者都已连接?两者都将连接。如果您查看文档: 您可以在一个应用程序中定义多个中心类。执行此操作时,连接是共享的,但组是分开的: 所有客户端都将使用相同的URL与您的服务建立信号器连接(“/signal”或您的自定义URL,如果您指定了一个),该连接将用于服务定义的所有集线器 与在单个类中定义

我对决定连接哪个集线器或不使用信号器的规则感到困惑


在javascript中,如果我编写
$.connection.hub.start()
,并说我有两个集线器(hub1和hub2),那么哪个集线器连接?或者两者都已连接?

两者都将连接。如果您查看文档:

  • 您可以在一个应用程序中定义多个中心类。执行此操作时,连接是共享的,但组是分开的:
所有客户端都将使用相同的URL与您的服务建立信号器连接(“/signal”或您的自定义URL,如果您指定了一个),该连接将用于服务定义的所有集线器

与在单个类中定义所有集线器功能相比,多个集线器没有性能差异

  • 所有集线器都获得相同的HTTP请求信息
由于所有集线器共享相同的连接,服务器获得的唯一HTTP请求信息是在建立信号器连接的原始HTTP请求中提供的信息。如果使用连接请求通过指定查询字符串将信息从客户端传递到服务器,则不能向不同的集线器提供不同的查询字符串。所有集线器将收到相同的信息


我在《客户端js指南》中找到了以下内容。“集线器代理上的客户端方法的存在是通知Signal触发OnConnected事件的原因”

注意:通常在调用start方法建立连接之前注册事件处理程序。如果要在建立连接后注册某些事件处理程序,可以这样做,但必须在调用start方法之前注册至少一个事件处理程序。这样做的一个原因是,一个应用程序中可能有许多集线器,但如果您只想使用其中一个集线器,则不希望在每个集线器上触发OnConnect事件。当建立连接时,集线器代理上的客户端方法的存在会告诉SignalR触发OnConnected事件。如果在调用start方法之前未注册任何事件处理程序,则可以调用Hub上的方法,但不会调用Hub的OnConnected方法,也不会从服务器调用任何客户端方法