Невозможно использовать ASP.NET Core SignalR с более чем одним пользователем
У меня проблема с веб-сайтом чата при запуске Azure SignalR с более чем одним пользователем. например
Пользователь A входит в систему и может нормально отправлять / получать сообщения, пользователь B также входит в систему и получает ошибку JavaScript. Если пользователь A закрывает окно браузера, то пользователь B может отправлять / получать сообщения в порядке, и наоборот.
Это технология, которую я использую:
- ASP.NET Core MVC (.NET Framework Runtime)
- Microsoft.Azure.SignalR v1.0.3 (бесплатный уровень)
- Microsoft.AspNetCore.SignalR
- Клиент JS - https://cdn.jsdelivr.net/npm/@@aspnet/signalr@1.0.3/dist/browser/signalr.min.js
Ошибка, кажется, исходит от клиента Javascript SignalR.
Это сообщение об ошибке консоли Google Chrome, которое я получаю:
Мой код JS выглядит так:
function setChatConnection() {
var chatConnection = new signalR.HubConnectionBuilder()
.withUrl('/chat')
.configureLogging(signalR.LogLevel.Information)
.build();
bindConnectionMessage(chatConnection);
chatConnection.start()
.then(function () {
chatConnection.send('joingroup');
})
.catch(function (error) {
console.error(error.message);
});
}
Я выполнил некоторую отладку, и она, похоже, попала в метод chatConnection.send('joingroup') до того, как произошла ошибка, хотя я думаю, что это красная сельдь, я добавил некоторую отладку в метод OnConnectedAsync в хабе и могу подтвердить, что это тоже не называется.
В моем хабе нет ничего необычного, я добавил некоторые логи, и похоже, что хаб не может быть вызван, когда второй пользователь пытается использовать чат
public override Task OnConnectedAsync()
{
return base.OnConnectedAsync();
}
public async void JoinGroup()
{
await Groups.AddToGroupAsync(Context.ConnectionId, "Test");
}
У кого-нибудь есть идеи, почему это происходит? Я также попытался перейти на платный уровень Azure SignalR, но все еще получаю ту же проблему.