我们可以为不同的东西创建多个集线器,并且为了连接到每个集线器,我们可以创建具有共享连接的多个客户端集线器,以便与所有集线器建立一个连接。现在,出现的问题是集线器连接方法没有引发每个集线器服务器端代码。
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事件,还有其他任何工作。
答案 0 :(得分:5)
我通过在两个集线器上放置调试点来测试它,并且只要您对两个集线器都有订阅,就会在两个集线器上调用OnConnected
。
见这里:Can I debug OnConnected method in SignalR Hub?
长话短说:
根据设计,如果您没有订阅集线器,那么javascript客户端无法从服务器获取任何消息,因此OnConnected
不会被调用。
修改强>
请参阅here注释部分:
注意:对于JavaScript客户端,您必须至少注册一个事件 在调用Start方法建立连接之前的处理程序。
在链接中查看更多信息。