我正在尝试创建一个基于服务器上的时间的倒数计时器。
我最初让服务器设置了剩余的时间,并且只做了setTimeout
1秒,这会减少时间。
我发现了2个问题:
setTimeout
可能会在较慢的计算机上落后一点。我更改了它,因此服务器将设置结束时间,客户端上的JavaScript将花费时间(以UTC为单位)并计算剩余的剩余时间。然后它会在每个setTimeout
回调上执行此操作。这使得时间和倒计时变得完美。如果客户端具有快速计算机/ JavaScript引擎,则计时器将保留在页面上。如果计算机/ JavaScript引擎速度较慢,您可能会看到第二个被忽略,但时间永远不会关闭。
到目前为止,我发现此方法存在1个问题:
因此,如果客户端的计算机时间不正确,剩下的时间可能是几秒钟,30秒甚至几天。
根据服务器的结束日期,有没有办法可以让时间保持准确?
答案 0 :(得分:0)
我不知道您需要什么样的分辨率,但考虑到网络和页面渲染延迟,将客户端 - 服务器协议变得比一秒钟好得多。我建议你每隔5或10秒进行一次ajax调查,并相应地调整你的计时器。还有comet基本上是“反向”ajax,它可以将时间推向客户端。但无论哪种方式,您仍然需要网络和渲染等待延迟。