Контекст: Я разрабатываю систему, аналогичную Uber, в частности, сервер обеспечивает передачу данных между двумя типами пользователей (драйвером и клиентом, например), через свои приложения посредством подключение к концентратору SignalR на сервере. Отслеживание их состояния соединения с сервером является обязательным, и процесс должен быть как можно более быстрым.
Их состояние соединения управляется через HashList<>()
для каждого типа пользователя (2 списка). Запись добавляется в список всякий раз, когда пользователь подключен (вызывается OnConnected()
), и эта запись удаляется из списка всякий раз, когда пользователь отключается (вызывается OnDisconnected()
).
Эти HashLists
являются переменными * stati c, в соответствии с лигой этого ответа StackOverflow .
При локальной отладке на моей машине HashLists изменяются мгновенно, но при публикации в облачной службе (в в моем случае: Azure), списки занимают время (около 10 ~ 15 секунд), пока они не будут обновлены. Однако установление действующего соединения с сервером занимает всего около 5 секунд.
Теперь я знаю, что подключение к серверу не может быть мгновенным, и это зависит от нескольких факторов, большинство из которых вне моей досягаемости, но обнаружение разъединения мгновенно (или как можно быстрее) решит мою проблему, что мне делать? Есть ли другой подход, который я должен использовать?
PS: Обнаружение разъединения может быть сделано мгновенно на стороне клиента, но в моем случае это не поможет, потому что мне нужны подключенные пользовательские данные на сервере.