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

问题描述:

我有一个Node服务器使用socket.io。我希望我的socket对象每分钟一次向连接的浏览器发送一次数据。理想情况下,像setInterval()这样的东西,而不是每隔x分钟拨打电话,查看时间并按分钟执行。Node/Socket.io - 如何每x分钟发送一个函数/数据

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

var data = "someData"; 
io.on('connection', function (socket) { 
    socket.emit_every_x_minutes(1, 'myData', data)} 
}); 

这会每隔1分钟周期性发送"someData"到客户端套接字。

什么是每x分钟发射的正确方法socket.io

为什么不使用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

+0

谢谢你的回应,但我正在寻找的东西,检查的时间和执行上的那一刻,不是每个x分钟 –

+0

他是这么写的? –

+1

然后你想要类似https://github.com/kelektiv/node-cron。 – marchaos

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

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

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