Время запустить счетчик на стороне клиента - PullRequest
1 голос
/ 07 июня 2010

Я разрабатываю веб-приложение с использованием asp.net mvc, и мне нужно сделать секундомер (хронометр) (с запрограммированными 30 секундами для запуска в определенный момент) на стороне клиента, используя время сервераКстати, часы клиента не могут быть часами сервера.Итак, я использую Jquery для вызова сервера с помощью JSon и получения времени, но это очень стресс, потому что каждую секунду я вызываю сервер, чтобы получить время, что-то вроде этого:, но когда у меня более 3 или 4 звонков, как это, браузер медленно, но работает!Я хотел бы знать, как улучшить производительность на стороне клиента, или есть ли способ сделать это ... есть ли способ, чтобы клиент слушал сервер как "сокет", чтобы узнать, должен ли хронометр запускаться ....

PS: Извините за мой английский!

спасибо Приветствия

Ответы [ 3 ]

2 голосов
/ 07 июня 2010

Фелипе, На странице загрузки получить время сервера, а также время на стороне клиента. и используйте эти две ссылки для определения времени сервера на стороне сервера, не используя вызов AJAX каждый раз. Извините за избыток кода suedo, но это не должно быть слишком сложно.

var ServerTimeReference;
var ClientTimeReference;
function InitializeTime()
   $.getJSon('/Home/Time', null, function (result) {
       ServerTimeReference = result.ServerTime; //convert to js time 
       ClientTimeReference = new Date();
     });

function GetServerTime() { 
     var TimeDifference = //get the difference between server and Client time
     var CurrentClientDateTime = new Date();
     var CurrentServerTime = // using timedifference and CurrentClientDateTime calculate ServerTime
     return CurrentServerTime;
} 
2 голосов
/ 07 июня 2010

Я бы все время проверял на стороне клиента. Вы уже используете jQuery, просто используйте плагин таймера. У меня был хороший успех с этим .

1 голос
/ 07 июня 2010

Если вы действительно хотите использовать его таким образом, у вас есть следующие опции:

Я не совсем понимаю, почему вы просто отправляете значение клиенту, а не просто строку " GO ", если клиент должен начать что-либо делать. В любом случае, вам не нужно опрашивать это каждую секунду (я имею в виду, давай, если часы твоего локального ПК ТАК неправильно, это будет плохой знак). Так что, к примеру, должно быть достаточно «синхронизировать» каждые 10 секунд (что также довольно быстро).

Итак, моя основная стратегия заключается в том, чтобы вызвать внутреннюю функцию, которая сообщает моему клиенту, сколько осталось времени, и настроить setTimeout на это значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...