Ответы пользователя по тегу Синхронизация данных
  • Как синхронизировать время на таймере между сервером и браузером с помощью JS?

    sergiks
    @sergiks Куратор тега PHP
    ♬♬
    Наверное, надо написать что-то похожее на cинхронизацию времени между клиентом и серверами в NTP. Это потребует нескольких запросов к серверу, чтобы оценить время отклика – т.е. не сразу с загрузки страницы удастся точно запустить таймер. Показать его можно сразу, и в течение следущих секунд скорректировать. Есть готовое решение: NTPJS, не пробовал.

    В простейшем варианте можно обойтись одним AJAX запросом после полной загрузки страницы. Запомнить текущее локальное время var tPing = (new Date).getTime();, запросить ajax'ом с сервера его текущее время tServ, получить ответ и запомнить локальное время tPong, когда ответ получен. И положиться на очень грубую гипотезу, что сервер ответил точно посередине интервала tPing..tPong. Т.е. решить, что разница серверного времени и локального составляет ровно tDiff = tServ - tPing + (tPong - tPing) / 2;

    Теперь для получения предполагаемого серверного «точного» времени, просто прибавлять к текущему локальному времени этот tDiff.
    Ответ написан
    1 комментарий