编程语言
首页 > 编程语言> > c# – 在多个集线器中使用共享连接时,OnConnected方法不称为SignalR

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

作者:互联网

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

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事件,还有其他任何解决方法.

解决方法:

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

见:Can I debug OnConnected method in SignalR Hub?

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

编辑

请参阅here注意部分:

Note: For JavaScript clients you have to register at least one event
handler before calling the Start method to establish the connection.

在链接中查看更多信息.

标签:c,net,asp-net,signalr,signalr-hub
来源: https://codeday.me/bug/20190519/1136645.html