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

时间:2015-09-25 09:34:19

标签: c# asp.net .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();

        }
}

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

1 个答案:

答案 0 :(得分:5)

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

见这里:Can I debug OnConnected method in SignalR Hub?

长话短说: 根据设计,如果您没有订阅集线器,那么javascript客户端无法从服务器获取任何消息,因此OnConnected不会被调用。

修改

请参阅here注释部分:

  

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

在链接中查看更多信息。