将服务器秒与JS客户端同步

时间:2012-04-08 11:13:10

标签: javascript jquery cron

我想根据服务器的时间驱动一个setTimeout循环,仅限秒。

因此,当服务器上的秒数为30时,将在所有客户端上运行某些功能。至关重要的是它们不会与服务器完全不同步,因为服务器上每运行一次CRON作业,比如45秒,这对系统正常运行非常重要。

如果客户端在服务器上停机几秒钟就可以了,客户端不需要彼此同步。

我正在使用Jquery库。

4 个答案:

答案 0 :(得分:0)

在这种情况下,您可以使用long polling。 客户端向服务器发送请求,服务器在一段时间后发送响应。 在回调时,您可以执行代码。

答案 1 :(得分:0)

当客户端首次加载时,它会询问服务器时间。或者您可以将当前服务器时间渲染到JS中。

然后客户端获取当前本地时间,计算两者之间的增量并使用该增量来计算任何给定时刻的当前服务器时间。当然,这种方法假设两个时钟不会发生太大分歧(他们真的不应该)。

答案 2 :(得分:0)

依赖于您的解决方案(AJAX,页面重新加载等),您可以在下一次调用时将秒数传递给客户端。这可以包含在对客户呼叫的每个响应中。

E.g。客户端呼叫服务器,服务器应答56秒,客户端在56秒内执行下一个呼叫。

答案 3 :(得分:0)

使用node.js和Socket.io

var io = require('socket.io').listen(80);

io.sockets.on('connection', tick);

function tick(socket){
    socket.emit("tick");
    setTimeout(function(){tick(socket)}, 30000);
}

客户端:

var socket = io.connect('http://serveraddr');
socket.on('tick', function (data) {
    doSomething()
});

这使用Socket.io为服务器直接控制客户端。