BidSystem, онлайн-аукцион, проблема со временем - PullRequest
1 голос
/ 01 октября 2010

ребята! Я разрабатываю онлайн-аукцион с ограничением по времени.

Конечный период времени только для одного открытого аукциона .

После входа на сайт я показываю время, оставшееся до открытого аукциона. Время рассчитывается следующим образом:

EndDateTime = Дата и время окончания аукциона;
DateTime.Now () = текущие дата и время

timeLeft= (EndDateTime - DateTime.Now()).Seconds().

В javascript я обновляю оставшееся время на:

timeLeft=timeLeft-1

Проблема заключается в том, что при входе в систему из разных браузеров одновременно браузеры показывают различный отсчет.

Помогите мне, пожалуйста!

Ответы [ 3 ]

1 голос
/ 01 октября 2010

Roman

Я немного посмотрел на eBay (они кое-что знают об этом материале :)) и заметил, что, как только элемент попадает в последние 90 секунд, каждые две секунды запускается запрос GET для обновления переменных в Javascript через ответ JSON. Вы можете посмотреть на это внутри firebug / fiddler, чтобы увидеть, что он делает.

вот пример json, который он сносит:

{
   "ViewItemLiteResponse":{
      "Item":[
         {
            "IsRefreshPage":false,
            "ViewerItemRelation":"NONE",
            "EndDate":{
               "Time":"12:38:48 BST",
               "Date":"01 Oct, 2010"
            },
            "LastModifiedDate":1285932821000,
            "CurrentPrice":{
               "CleanAmount":"23.00",
               "Amount":23,
               "MoneyStandard":"£23.00",
               "CurrencyCode":"GBP"
            },
            "IsEnded":false,
            "AccessedDate":1285933031000,
            "BidCount":4,
            "MinimumToBid":{
               "CleanAmount":"24.00",
               "Amount":24,
               "MoneyStandard":"£24.00",
               "CurrencyCode":"GBP"
            },
            "TimeLeft":{
               "SecondsLeft":37,
               "MinutesLeft":1,
               "HoursLeft":0,
               "DaysLeft":0
            },
            "Id":160485015499,
            "IsFinalized":false,
            "ViewerItemRelationId":0,
            "IsAutoRefreshEnabled":true
         }
      ]
   }
}

Вы можете сделать что-то подобное внутри вашего кода.

[править] - при дальнейшем рассмотрении кода eBay, хотя он только выполняет интенсивные запросы GET в течение последних 90 секунд, тот же самый json, что и выше, добавляется, когда страница также первоначально загружается , Затем, примерно через 3 минуты, запрос GET запускается каждые 10 секунд. поэтому я предполагаю, что тот же javascript запускается для этой структуры, будь то> 90 секунд или нет.

1 голос
/ 01 октября 2010

Полагаю, разница в несколько секунд всегда будет зависеть от времени обработки сервером и времени, необходимого для загрузки страницы.

Наилучшим способом будет отправить время окончания в браузер и рассчитать время, оставшееся в JavaScript Таким образом, время должно быть одинаковым (конечно, на одной машине).

0 голосов
/ 01 октября 2010

Это может быть проблема с загрузкой JavaScript на разных скоростях, или setInterval будет срабатывать в несколько разное время в зависимости от цикла

я бы посмотрел в эти два

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