Node / Socket.io - 如何每x分钟发出一次函数/数据

时间:2017-10-18 09:25:15

标签: node.js socket.io

我有一个使用Node的{​​{1}}服务器。我希望我的socket.io对象每分钟一次向连接的浏览器发送一些数据。理想情况下类似于socket,但不是每隔x分钟调用一次,而是查看时间并在分钟执行。

如果我想每1分钟发送一次,我想它会看起来像这样。

setInterval()

这会每1分钟定期向客户端套接字发出var data = "someData"; io.on('connection', function (socket) { socket.emit_every_x_minutes(1, 'myData', data)} });

每x分钟"someData"发出的正确方法是什么?

2 个答案:

答案 0 :(得分:3)

为什么不使用setInterval / setTimeout?

var data = "someData";
io.on('connection', (socket) => {
    setInterval(() => {
        socket.emit(1, 'myData', data)}
    }, 60 * 1000);
});

如果您想要分钟,每分钟,没有图书馆:

var data = "someData";
const doEveryMinute = (socket) => {
   setTimeout(() => {
       setInterval(() => doEveryMinute(socket), 60000);
       socket.emit(1, 'myData', data)}
   }, (60 - date.getSeconds()) * 1000);
}

io.on('connection', (socket) => {
    doEveryMinute(socket);
});

如果准确性很重要,那么您需要https://github.com/kelektiv/node-cron之类的内容。

答案 1 :(得分:1)

您可以使用node-schedule或node-cron模块。

访问:https://www.npmjs.com/package/node-schedule

访问:http://merencia.com/node-cron/