SignalR等待启动连接

时间:2018-09-26 19:09:32

标签: javascript c# asp.net-mvc websocket signalr

我正在实现SignalR库,以便在ASP.NET MVC应用程序中以一种“队列”的形式使用websocket。

只有两个用户时,一切正常。当第三个用户登录时(我是说,我打开一个新选项卡),他的SignalR启动请求正在等待处理,其他用户无法再使用该应用程序。

所有浏览器都在发生这种情况:如果我打开3个Chrome选项卡,或3个Firefox,或2个Chrome或1个Firefox,或2个Firefox和1个Chrome,..它将永远挂起。

enter image description here

我的代码与为SignalR教程提供的代码相同:“ SignalR 2和MVC 5入门”。

有人可以解决这个问题吗?我开始认为这是IIS的局限性,但我不确定100%。我正在使用最新的SignalR版本(2.3.0),4.6.1 ASP版本(我已经在IIS配置中启用了WebSockets)。

我发现了类似的问题(SignalR start pending),但似乎没有给出答案。

JavaScript(客户端)代码:

 var attendHub = $.connection.attendHub;

    // Create a function that the hub can call back
    attendHub.client.reloadGrid = function (sr) {
        // Business logic
        }
    };

    $.connection.hub.start();

服务器中心(C#)代码:

public class AttendHub : Hub
{
    private static readonly IHubContext hubContext = GlobalHost.ConnectionManager.GetHubContext<AttendHub>();

    public static void RefreshAttendList(int branchId)
    {
        // Business logic
        ///...
        hubContext.Clients.All.ReloadGrid(sr);
    }
}

然后我从控制器调用RefreshAttendList方法,执行以下行:

AttendHub.RefreshAttendList(AppInfo.ActiveUser.BranchId);

我可能做错了什么?

1 个答案:

答案 0 :(得分:0)

好吧,我发现这是本地IIS的局限性,因为我将配置更改为使用IIS Express而不是本地,并且它的工作就像一个魅力!

希望这对遇到相同问题的人有所帮助!