2017-02-08 3 views
0

Я разрабатываю приложение, которое выбирает пользователя и имеет 15 секунд. таймер для ответа этого пользователя. Пользовательское приложение запрашивает db каждые 5 секунд, чтобы узнать, выбран ли этот пользователь. Если это так, мобильное приложение начинается с 15 секунд. таймер. Проблема заключается в том, что таймеры никогда не будут совпадать, потому что пользовательское приложение может быть на другом таймерном цикле, в котором работает бэкэнд, и может запросить db позднее. Я использую Angular, NodeJS и expressJS + MongoDB для разработки этого приложения.Как синхронизировать бэкэнд-таймер с мобильным приложением

любое предложение о том, как я могу синхронизировать таймеры?

ответ

0

Вам необходимо создать API для запроса текущего времени сервера и использовать это время сервера в качестве основы вашего таймера.

Вам также необходимо учитывать условие, когда браузер приостанавливает выполнение javascript. Это справедливо для мобильного устройства. Когда мобильное устройство приостановлено/спящее, браузер останавливает выполнение javascript, в результате чего таймер не синхронизируется.

Каждый тик, отметьте последний тик миллисекунды с текущим тиком миллисекунды. Если разница больше некоторого порогового значения, тогда предположим, что таймер не синхронизирован и необходимо синхронизировать, запросив текущее время сервера и пересчитать значение таймера

+0

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