Я занимаюсь разработкой приложения с использованием Android & базы данных Firebase Realtime, где пользователи присоединяются к комнате, затем, когда хост нажимает кнопку запуска игры, все клиенты запускают основную игровую активность (через ValueEventListener на дочернем узле «Запущено» в номер). Основная игра имеет 60se c обратный отсчет, когда пользователи составляют предложение, а затем в конце 60secs все предложения собираются и отображаются.
Мне трудно собрать все предложения в конце срока. до таймеров 60se c, отключенных на разных клиентах. Мне нужен способ, чтобы все игры заканчивались в одно и то же время, чтобы процесс сбора был плавным и ничего не пропускалось.
Я знаю, что у Firebase есть и: /.info/serverTimeOffset
, и ServerValue.TIMESTAMP
, но я борюсь за как их использовать для синхронизации c таймеров.
Я пытался использовать System.currentTimeMillis() + serverTimeOffset
для оценки времени сервера и заставить всех клиентов вести обратный отсчет до endTime - (System.currenTimeMillis() + serverTimeOffset)
, где endTime
- время, записанное в база данных хоста, которую все клиенты читают, но таймеры все еще не работают.
Как лучше всего справиться с этой ситуацией?