我正在实现SignalR库,以便在ASP.NET MVC应用程序中以一种“队列”的形式使用websocket。
只有两个用户时,一切正常。当第三个用户登录时(我是说,我打开一个新选项卡),他的SignalR启动请求正在等待处理,其他用户无法再使用该应用程序。
所有浏览器都在发生这种情况:如果我打开3个Chrome选项卡,或3个Firefox,或2个Chrome或1个Firefox,或2个Firefox和1个Chrome,..它将永远挂起。
我的代码与为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);
我可能做错了什么?
答案 0 :(得分:0)
好吧,我发现这是本地IIS的局限性,因为我将配置更改为使用IIS Express而不是本地,并且它的工作就像一个魅力!
希望这对遇到相同问题的人有所帮助!