Невозможно использовать ASP.NET Core SignalR с более чем одним пользователем - PullRequest
0 голосов
/ 10 января 2019

У меня проблема с сайтом чата при запуске Azure SignalR с более чем одним пользователем. например,

Пользователь A входит в систему и может нормально отправлять / получать сообщения, Пользователь B также входит в систему и получает ошибку JavaScript. Если пользователь A закрывает окно браузера, тогда пользователь B может нормально отправлять / получать сообщения, и наоборот.

Это технология, которую я использую:

Ошибка, похоже, исходит от клиента JavaScript SignalR.

Это сообщение об ошибке консоли Google Chrome, которое я получаю:

enter image description here

Мой код 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, но все еще получаю ту же проблему.

...