Как отследить, что пользователь SignalR Hub закрыл браузер? ⇐ C#
-
Anonymous
Как отследить, что пользователь SignalR Hub закрыл браузер?
У меня есть SignalR Hub для сообщений в серверном проекте Blazor. В Hub у меня есть список пользователей:
публичный статический список _messagesHubUsers = новый список(); общедоступное переопределение асинхронной задачи OnDisconnectedAsync (исключение e) { _messagesHubUsers.RemoveAll(x => x.ConnectionId == Context.ConnectionId); ждут Clients.All.SendAsync("UsersListChanged"); ждут base.OnDisconnectedAsync(e); } Но в этом случае, когда пользователь просто закрывает браузер, метод концентратора «OnDisconnectedAsync» не вызывается. Как отследить, что пользователь закрыл браузер, обновить список пользователей и уведомить других пользователей?
Я попытался создать счетчик, чтобы он регулярно запускал метод Ping на клиенте и возвращал true, если клиент подключен. В случае отсутствия ответа пользователь был отключен. Но вызов от счетчика поступает из-за пределов хаба, что делает такое решение слишком сложным.
У меня есть SignalR Hub для сообщений в серверном проекте Blazor. В Hub у меня есть список пользователей:
публичный статический список _messagesHubUsers = новый список(); общедоступное переопределение асинхронной задачи OnDisconnectedAsync (исключение e) { _messagesHubUsers.RemoveAll(x => x.ConnectionId == Context.ConnectionId); ждут Clients.All.SendAsync("UsersListChanged"); ждут base.OnDisconnectedAsync(e); } Но в этом случае, когда пользователь просто закрывает браузер, метод концентратора «OnDisconnectedAsync» не вызывается. Как отследить, что пользователь закрыл браузер, обновить список пользователей и уведомить других пользователей?
Я попытался создать счетчик, чтобы он регулярно запускал метод Ping на клиенте и возвращал true, если клиент подключен. В случае отсутствия ответа пользователь был отключен. Но вызов от счетчика поступает из-за пределов хаба, что делает такое решение слишком сложным.
Мобильная версия