Работа с группами в ядре SignalR

Я создаю класс Hub, когда новый пользователь подключается к функции вызова OnConnected:

public class ReportChat : Hub
{
    public async Task OnConnected()
    {
        string name = Context.User.Identity.Name;
        await Groups.AddAsync(Context.ConnectionId, name);
    }
}

Но при подключении второго пользователя или иногда, когда я обновляю страницу, SignalR генерирует ошибку во внешнем интерфейсе: Нет соединения с этим идентификатором.

Использование транспортного протокола: signalR.TransportType.LongPolling

connection = new signalR.HubConnection("/ReportJson", { transport: signalR.TransportType.LongPolling });
        connection.on('SendReport',
            function(data) {
                console.log(data.value.name);
            });
        connection.start().then(() => {
            connection.invoke('OnConnected');
            hubConnectionEstablished = true;
        });

person Никита Воробьев    schedule 22.02.2018    source источник
comment
Если вы обновите страницу, клиент получит новый идентификатор. Вы должны справиться с этим самостоятельно   -  person Stephu    schedule 22.02.2018
comment
Если у вас несколько серверов, вам нужно включить липкость.   -  person davidfowl    schedule 14.03.2018


Ответы (1)


Когда вы обновляете свою страницу, вы отключаетесь и снова подключаетесь и, следовательно, генерируете новый идентификатор подключения для этого клиента. Вы можете убедиться, что это происходит, установив точки останова в своих методах OnConnected и OnDisconnected.

person Mikael Mengistu    schedule 22.02.2018