Показать сообщение отдельно
Старый 20.11.2009, 10:13
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 4  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
Цитата:
начальная установка
клиент дай время -
сервер 9.59

опрос:
клиент - моё время 10.00
сервер - моё 10.02
клиент - ага разница 2 секунды /2 = 1 секунда
устанавливаем время на 10.03
...
клиент моё время 10.05
сервер моё - 10.09
клиент: ага разница 4 секунды /2= 2
устанавливаем время на 10.11
Код AS3:
package  
{
	/**
	 * Синхронизация с серверным таймером
	 * @author k0t0vich
	 */
	public class SynchroTimer
	{
		private var delta:int;
		private var answerTime:int;
		private var syncTime:int;
		private var savedTime:int;
 
		/**
		 * обработчик данных от сервера - начальное время
		 * @param	serverTime
		 */
		public function onStartTime(serverTime:int)
		{
			syncTime = serverTime;
			savedTime = getTimer();
		}
 
 
 
		/**
		 * обработчик данных от сервера - текущее время
		 * @param	serverTime
		 */
		public function onServerTime(serverTime:int):void
		{
				delta = (serverTime-answerTime)/2;
				syncTime = serverTime + delta;
				savedTime = getTimer();
		}
 
 
		/**
		 * Текущее синхронизированное время
		 */
		public function get time():int
		{
			var ret:int = getTimer() - savedTime + syncTime;
			return ret;
		}
 
		public function getServerTime():void
		{
			answerTime = time;
			///// послыаем запрос на сервер 
			//..
		}
 
		public function getSatrtServerTime():void
		{
			answerTime = getTimer();
			///// послыаем запрос на сервер 
			//..
		}
 
	}
 
}
в этой схеме предполагается что вопрос и ответ шлются одинаковое время, что на самом деле не всегда правда, но такая схема позволяет немного нивелировать ошибку, да и разница в 1-2 секунды в случае аукциона наверное не очень существенна, хотя в каких нибудь реалтайм стрелалках прилиична, но в этом случае поможет только сокет.
__________________
Отряд Котовскага


Последний раз редактировалось Котяра; 20.11.2009 в 10:47.