Согласно qaru.site/questions/169956/..., нет способа перечислить или проверить количество подключенных клиентов. Тем не менее, ответ немного устарел, и мне интересно, действительно ли он действителен.
Является ли это единственным вариантом для сервера для регистрации всех подключений и отключений? Есть ли хоть какая-то функциональность, которая помогает нам обнаруживать отключения?
Абсолютно есть способ.
Многие люди справляются с этим, создавая одноэлементный класс, который содержит параллельный словарь любого пользовательского объекта пользователя, который вы определяете. Если вы добавите свои пользовательские объекты в этот словарь при подключении и удалите их при отключении, вы сможете запросить свой словарь для подсчета активных пользователей. Пожалуйста, имейте в виду, что это может быть не до второй точности, потому что есть примерно 30 секунд "прерывание" окна, которое все еще может быть активным, даже если клиент больше не потому, что закрыл свой браузер.
Теперь, есть ли в SignalR какие-либо реальные "hardbaked" функции для этого? Не то чтобы я знаю, но я еще не слишком изучал 2.0. Что касается обнаружения разъединений, он довольно надежный, и если соединение не обнаружено, оно удалит соединение, как указано, что позволит вам оставаться на вершине отключений.
Здесь есть отличный учебник, описывающий этот подход: