Я реализую библиотеку SignalR для использования веб-сокета в виде «очереди» в приложении ASP.NET MVC.
Все работает, как ожидается, когда есть только два пользователя.Когда третий входит в систему (я имею в виду, я открываю новую вкладку), его запрос на запуск 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 (я уже включил WebSockets в конфигурации IIS).
Я нашел похожий вопрос ( Ожидается запуск SignalR) но, похоже, он не дает ответа.
Код 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);
Что я могу делать неправильно?