我们可以为不同的事物创建多个集线器,为了连接到每个集线器,我们可以创建多个具有共享连接的客户端集线器,这样,一个连接就可以连接到所有集线器。现在,问题出现了,集线器 onconnected 方法没有在每个集线器服务器端代码上引发。
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# - 当我在多个集线器中使用共享连接时,OnConnected 方法未调用 SignalR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32779150/