0

我一直在编写一个便士拍卖网站并遇到倒计时问题。不同机器上的启动时间似乎略有不同(通常相差一秒左右,但有时是 2 或 3 秒),这对于投标人来说显然是个大问题。我认为答案的很大一部分只是网络滞后,但是(a)还有其他因素吗?(b) 有没有办法以某种方式纠正网络滞后?

我尝试每秒通过 Ajax 调用访问服务器,并且效果很好(尽管总是有一点延迟),但我宁愿不必这样做,因为这对服务器来说会很困难。

JavaScript 开发不是我的专长,所以我会很感激任何提示和反馈!

这是我的代码,在服务器上生成

jQuery(document).ready(function() {
    var aid = " . $aid . ";
var loadTime = Math.floor(jQuery.now()/1000);
//alert(loadTime);
serverTime = " . time() . ";
var clockDiff = loadTime - serverTime;
var diff;
auctionExpirationValue" . $aid . " = " . $expiry . ";
    var newServerTime = setInterval(function() {
         diff = window['auctionExpirationValue' + aid] - Math.floor((jQuery.now())/1000) + clockDiff;
         diff_string = parse_countdown(diff);
         jQuery('#auction-expiry').html(diff_string);
    },1000);
});

clockDiff 变量用于说明用户机器和服务器之间的任何时钟差异。显然,如果一台机器领先或落后,用户会在倒计时中看到不同的值。

如您所见,代码每秒循环一次(或者,或多或少每秒,我理解它不准确),计算现在和拍卖到期之间的差异(用clockDiff 补偿),格式化并显示它。很简单。auctionExpirationValue*** 全局变量用于在本地将拍卖到期时间存储为时间戳。

我的客户还告诉我,在他的 iPad 上,除了原来的差异之外,倒计时有时会稍微漂移。那里的解释是什么?

4

0 回答 0