我一直在为一个便士拍卖网站编码并遇到倒计时问题。不同的机器上的起始时间似乎有点不同(通常是大约一秒的差异,但有时是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上,除了最初的差异之外,倒计时有时会稍微偏移。有什么解释?