将网页上的时间与服务器同步的最佳方法是什么?
我的网页需要为所有用户同时开始倒计时,并在同一时间结束,以防止任何一个用户有轻微的时间优势。
我的问题与这个问题类似,但接受的答案有帮助但没有完全回答我的问题:how-to-sync-a-javascript-countdown-with-server-time
我在页面加载后使用 Ajax 获取服务器时间,但我能否保证超过 15 分钟倒计时将在每个客户端的同一时间结束?
即使计时器准确地测量时间,由于忽略 setInterval 的毫秒数,客户端页面之间仍可能存在不到 1 秒的差异 - 有什么方法可以克服这个问题吗?
最佳答案
接受的答案很好,并且在我编写一个库来解决这个问题时帮助激励了我。该库通过查看自身的加载时间而不是整个页面(如上面的 performance.timing 所做的那样)产生更精确的答案,然后通过一系列 10 个 XMLHttpRequests 获得更高的精度。此外,针对您的第二个问题,我的图书馆不会忽略毫秒(接受的答案也是如此)。
库名为 ServerDate并且免费提供。
这是自述文件的一部分:
您可以像使用 Date
函数或其函数之一一样使用 ServerDate
实例,例如:
> ServerDate()
"Mon Aug 13 2012 20:26:34 GMT-0300 (ART)"
> ServerDate.now()
1344900478753
> ServerDate.getMilliseconds()
22
还有一种新方法可以获取ServerDate对 服务器的时钟(以毫秒为单位):
> ServerDate.toLocaleString() + " ± " + ServerDate.getPrecision() + " ms"
"Tue Aug 14 01:01:49 2012 ± 108 ms"
您可以看到服务器时钟和浏览器时钟之间的差异,以毫秒为单位:
> ServerDate - new Date()
39
关于javascript - 如何将客户端网页计时器与服务器同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9350928/