@Gumus171991

Как синхронизировать клиентскую и серверную часть сайта?

Здравствуйте!
Мне нужно синхронизировать клиентскую серверную часть приложения.

Если конкретнее, то есть некое число, которое просчитывается в зависимости от времени начала.
Нужное время я храню на сервере и отправляю на клиент с помощью сокетов(каждые 0.4 секунды).
Получается, что через каждые +-0.4 секунды(в зависимости от того, как быстро придёт сокет) у меня есть новая просчитанная с помощью времени версия числа.

Как мне, с учётом вышеописанного, сделать плавный переход из старого числа с дробной частью в новое с дробной частью(к примеру из 10.32 в 20.23), пока не поступил сокет с новым временем для генерации нового числа. Делал что-то такое с помощью setInterval, но из-за разности времени между приходом сокетов, ничего не получилось.

Заранее спасибо за ответы!
  • Вопрос задан
  • 146 просмотров
Решения вопроса 1
Aetae
@Aetae Куратор тега JavaScript
Тлен
Верить клиенту конечно нельзя, но можно сделать вид что веришь:
1. рассчитывай число и на клиенте и на сервере.
2. в начале расчёта один раз синхронизируй с сервером.
3. выводи рассчитываемое на клиенте число с какой угодно плавностью.
4. если синхронизация прям очень важна - продолжай слать число с сервера и сравнивать с клиентом, если разница в пределах (заданной) погрешности - ничего не делай, еслы вышла за пределы - меняй клиентское(ничего страшного если такое будет происходить изредка).
5. если сама по себе синхронизация не особо важна, а важно лишь конечно число, то собственно сравнивай клиентское с серверным только в самом конце. Если совпало (с погрешностью в нужную сторону) - всё ок. Не совпало - клиент хацкер - идёт нафиг.

У любого нормального клиента всё всегда будет совпадать, мегаредкие исключения со сломанными системными часами в любом случае будут баговать, а хацкеры нам и не нужны.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы