Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Класс Data, работа с серверным временем (http://www.flasher.ru/forum/showthread.php?t=134564)

Oli Short 04.01.2010 19:03

Класс Data, работа с серверным временем
 
Здравствуйте. Пишу приложение - аукцион, но не суть :)
Есть таймер, таймер показывает сколько осталось до окончания аукциона. Для правильной работы у всех пользователей таймер должен выдавать одинаковое по ходу работы значение окончания аукциона, т.е опираться на время системы пользователя будет грубой ошибкой. Тем самым хочу брать серверное время(парсить при помощи xml). Вот написал простой код работы...

Код AS3:

//ставим дату до 1го января, 2011года т.е дата окончания аукциона
var importantDate:Date = new Date(2011, 0, 1, 00, 00, 00);
var importantDateDif:Number = importantDate.valueOf();
 
var timer:Timer = new Timer(1000);
timer.addEventListener(TimerEvent.TIMER, updateClock);
timer.start();
 
function updateClock(e:TimerEvent):void
{
  //сюда хочу подставлять получение время сервера
  var currentDate:Date = new Date();
  var currentDateDif:Number = currentDate.valueOf();
 
  var dif:Number = importantDateDif - currentDateDif;
 
 
}

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

wvxvw 04.01.2010 19:29

можно сверятся с сервером и реже... сделать синхронизацию 1 раз (и в это же время засечь, какое время было на машине пользователья), и дальше уже считать используя Date или getTimer() (по некоторым данным - не самый точный инструмент).
Но, я думаю, что лучше все-таки не доверять пользователю в этом отношении, а ориентироваться только на серверное время.

Oli Short 05.01.2010 21:15

Код AS3:

setInterval(getServerDate, 1000);
 
function getServerDate():void{
var xmlLoader:URLLoader = new URLLoader(new URLRequest("http://test1.ru/auction/serverDate.php?random="+Math.random()));
xmlLoader.addEventListener(Event.COMPLETE, viewServerDate);
}
 
function viewServerDate(e:Event):void
{
var XMLData = XML(e.target.data);                 
xml.text = String(XMLData);
}

походу придется сразу делать синхронизацию и плесать) т.к получаются временные пробелы...

00:10
00:09
00:06
00:04
00:01

не айс)

kei 06.01.2010 00:58

А зачем каждую скунду сверять? Пользоваель зашел - флэшка получила ремя, секуд за 5-7 до конца перепроверила на новые ставки... и все. В остальное время пусть рандомно перепроверяет (чтоб не грузить сервак).


Часовой пояс GMT +4, время: 05:23.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.