Показать сообщение отдельно
Старый 10.09.2016, 19:04
faraday вне форума Посмотреть профиль Отправить личное сообщение для faraday Найти все сообщения от faraday
  № 1  
Ответить с цитированием
faraday
 
Аватар для faraday

Регистрация: Apr 2009
Сообщений: 409
По умолчанию Синхронизация времени

Здравствуйте, стоит задача иметь на клиенте всегда актуальное серверное время с минимальной погрешностью. для этого на клиент при инициализации передается время с сервера, и считается его дельта к клиентскому. Далее ,каждую секунду, время обновляется на актуальное:

Код AS3:
		private static function tick(t:TimerEvent = null) {
			_now = new Date().getTime() + timeDiff; 
			sendEvent(CLOCK.TICK, now);
		}
В теории все должно работать правильно, и время на клиенте всегда должно отставать от серверного на пару секунд. Но на практике время иногда отстает больше чем на минуту, а у некоторых даже обгоняет серверное. Приходится каждую минуту сверяться (при учете пинга). Для меня это большая загадка, если учесть что все обращения ко времени идут после события TICK, и оно на клиенте не может постоянно плавать без перевода часов. Кто сталкивался с подобной проблемой, и есть ли какое-то объяснение и решение?