Что случилось с Firebase ".info / connected"? - PullRequest
0 голосов
/ 26 мая 2020

Согласно ответу ниже, нам нужно читать из базы данных, чтобы иметь возможность запускать ".info / connected";

{ ссылка }

I Я пытаюсь использовать этот ".info / connected", чтобы проверить, есть ли у пользователя соединение rnet. Поэтому сначала я проверяю логическое значение, возвращаемое из ".info / connected", и если оно истинно, то пытаюсь прочитать другие данные. Однако он продолжает отправлять мне false с первой попытки, даже если есть доступ inte rnet. Поэтому моя программа решает не читать другие данные, думая, что нет rnet соединения.

Согласно приведенному выше ответу и моему опыту, вы не можете проверить, имеет ли пользователь inte rnet доступ с использованием ".info / connected", если вы не читаете что-то из базы данных, для чего, по иронии судьбы, требуется доступ inte rnet.

Тогда для чего используется этот ".info / connected"? Я делаю что-то неправильно? Есть ли способ проверить, есть ли у пользователя доступ к inte rnet, используя ".info / connected"?

Ответы [ 3 ]

1 голос
/ 26 мая 2020

Просто запросить его один раз не очень полезно. Более полезной реализацией было бы добавление слушателя (как показано в документации ) в это место, чтобы ваш код можно было обновить, как только станет известно об изменении подключения. Ваше приложение может реагировать на эти изменения по мере необходимости.

Вы также должны знать, что изменения в подключении могут занять некоторое время, чтобы отразиться в .info / connected. Медленное или нестабильное соединение не обязательно приведет к изменению файла .info / connected. Если устройство пользователя по какой-либо причине теряет соединение, .info / connected не обязательно отразит это немедленно. Прежде чем Android объявит, что соединение определенно разорвано, потребуется некоторое время для истечения времени ожидания операций сокета. На самом деле нет никакого способа обойти этот факт - не всегда можно отличить потерянное соединение от того, которое просто тормозит.

.info / connected хорошо отражает общее состояние соединения, но поскольку он может быть отложено, это не следует рассматривать как индикатор того, что следующий запрос будет обязательно завершен немедленно из-за возможности подключения.

0 голосов
/ 26 мая 2020

Что лучше всего для меня сейчас работает, так это получить значение из ".info / connected", не заботиться об этом, а затем использовать Thread.sleep(1200), чтобы скоротать время. (Пусть это будет более 1 секунды). Затем вызовите ".info / connected", чтобы узнать, есть ли у пользователя соединение inte rnet. Первый вызов маловероятен или не должен быть правильным, он просто запускает его для отправки правильного значения во второй раз.

0 голосов
/ 26 мая 2020

Узел .info/connected в клиенте Firebase Realtime Database указывает, подключен ли клиент к серверам Firebase Realtime Database. Для этого требуется гораздо больше, чем просто подключение inte rnet, что также является причиной того, что значение .info/connected равно false в течение некоторого времени после запуска приложения, даже если ваше устройство уже имеет подключение inte rnet.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...