当我在多个集线器中使用共享连接时,OnConnected方法不称为SignalR

Man*_*wat 5 .net c# asp.net signalr signalr-hub

我们可以为不同的东西创建多个集线器,并且为了连接到每个集线器,我们可以创建具有共享连接的多个客户端集线器,以便与所有集线器建立一个连接.现在,出现的问题是集线器连接方法没有提高每个中心服务器端代码.

public class Hub1 : Hub
{
        public override Task OnConnected()
        {
            return base.OnConnected();

        }
}

public class Hub2 : Hub
{
        public override Task OnConnected()
        {
            return base.OnConnected();

        }
}
Run Code Online (Sandbox Code Playgroud)

假设在客户端我使用在两个集线器上定义的客户端方法创建hub1和hub2,然后在服务器端只调用其中一个onConnected方法的集线器.如果我使用单独的连接在客户端创建集线器,则会调用OnConnected方法.因此,如果我想为每个集线器使用相同的连接,还希望提高单独集线器的on Connected事件,还有其他任何解决方法.

DDa*_*Dan 5

我通过在两个集线器上放置调试点来测试它,并且OnConnected只要您对两个集线器都有任何订阅,就会在两个集线器上调用它.

请参阅此处:我可以在SignalR Hub中调试OnConnected方法吗?

简而言之: 根据设计,如果您没有对集线器的任何订阅,那么javascript客户端无法从服务器获取任何消息,因此OnConnected不会被调用.

编辑

请参阅此处的注释部分:

注意:对于JavaScript客户端,在调用Start方法建立连接之前,必须至少注册一个事件处理程序.

在链接中查看更多信息.