Я хочу убедиться, что я правильно реализую функцию группы для библиотеки SignalR.Signalr Connect Disconnect and reconnect
Что я делаю, это позволяет пользователям запрашивать помощь для конкретного проекта. Пользователь, который запустил проект, может добавить других пользователей в таблицу совместной работы для своего проекта.
Collaboration
(
UserID Uniqueidentifier,
ProjectID INT
)
Если какой-либо пользователь переходит в режим совместной работы я хочу добавить пользователя в группу, так что если другой пользователь входит в систему и переходит в режим совместной работы они добавляют к той же группе. Группы всегда называются ProjectID
.
Итак, когда пользователь входит в систему и открывает проекты, если этот проект находится в таблице сотрудничества, я добавляю их в Groups.Add(Conext.ConnectionId,projID)
;
Вот мои вопросы:
Когда пользователь подключается от клиента и OnConnected называется, если не существует ни одной группы с projíd будет это выдаст ошибку или будет signalr просто создать эту группу на лету ?
public override Task OnConnected(string projID)
{
return Groups.Add(this.Context.ConnectionId, projID);
}
Когда клиент закрывает свой браузер, это когда вызывается OnDisconnected? И если этот пользователь по какой-то причине не входит в указанную группу projID, этот бросок и ошибка или будет сигнализировать об этом?
public override Task OnConnected(string projID)
{
return Groups.Add(this.Context.ConnectionId, projID);
}
Для OnReconnected, это означает, что если пользователь выходит из системы, и делает что-то другое затем снова входит в том, что они автоматически добавляются обратно в группу, они где часть до подключения была потеряна?
public override Task OnReconnected(string projID)
{
return Clients.Group(projID).rejoined(Context.ConnectionId,
DateTime.Now.ToString());
}
Для всех вышеописанных методов необходимо вызвать базовый метод каждого метода с переопределением?
Не обижайтесь, но почему бы вам просто не попробовать? 1. Создано, если оно не существует. 2. Да, когда сеанс завершается (событие закрытия браузера), вызываемый отключен. Он не будет бросать ошибку и будет обрабатываться, если этот пользователь не находится в этой группе. 3. Подключено, если клиент не отправил биение в какое-то время и внезапно снова подключился из-за утерянных сетевых подключений и т. Д.Этот код, который вы опубликовали, обрабатывает повторное добавление пользователя к этой группе с новым идентификатором соединения после повторного подключения. – f0x
Почему вы не ответили с этим комментарием, и я мог бы отметить ваши комментарии в качестве ответа? –