我已经在SignalR中编写了一个相当简单的聊天应用程序。
看来,如果我使用2个以上的选项卡/浏览器/设备进行连接,则第三个将挂起并且永远不会连接,最终会导致问题。
为什么只能与2个用户连接?
一旦我断开另一个连接中的一个,第三个请求就会通过。
我使用的是同一用户还是不同的用户都没关系。
我在Windows 10,带有SignalR 2.2的Asp.Net MVC5上使用IIS
它从不调用中心代码,如果在打开该选项卡时尝试与第四个客户端连接,则第四个选项卡甚至都不会返回视图。

$.connection.hub.start().done(function () {
//add all existing messages when we start the connection
//chat.server.addExistingMessages();
console.log('Now connected, connection ID=' + $.connection.hub.id);
Run Code Online (Sandbox Code Playgroud)
第三个连接从未命中console.log。
$.connection.hub.start()
Run Code Online (Sandbox Code Playgroud)
被命中,并且连接和集线器的值都不为空。
public override Task OnConnected()
{
Run Code Online (Sandbox Code Playgroud)
除非我终止其他两个连接中的一个,否则永远不会打在第三个连接上。因此,共享这些方法/函数的内部结构只会增加我的困惑。
$.connection.hub.starting(function () {
console.log('starting')
});
$.connection.hub.received(function () {
console.log('connection received')
});
Run Code Online (Sandbox Code Playgroud)
在第三个客户端上,没有开始将其放入控制台,但是没有收到。