c# - 当我在多个集线器中使用共享连接时,OnConnected 方法未调用 SignalR

标签 c# asp.net .net signalr signalr-hub

我们可以为不同的事物创建多个集线器,为了连接到每个集线器,我们可以创建多个具有共享连接的客户端集线器,这样,一个连接就可以连接到所有集线器。现在,问题出现了,集线器 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/

相关文章:

c# - 如何为 .NET Core View 类替换 Request.Url.GetLeftPart(UriPartial.Authority)?

.net - 在 .NET 上下文中使用 D 编程语言

c# - "arbitrary"分隔符之间的 RegEx 替换

c# - 是我错了还是 Roslyn REPL 保护过度了?

c# - 从主菜单场景加载游戏后,音频停止播放

c# - 多对多关系的 LINQ to SQL 查询

c# - 错误 7 运算符 '==' 不能应用于类型 'object' 和 'bool' 的操作数

c# - 查找文件的确切路径

.net - 您遇到的最令人印象深刻的 LINQ 语句是什么?

c# - 请帮忙修改这个正则表达式