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

Osc*_*ers 4 node.js socket.io

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

如果我想每 1 分钟发送一次,我想它会是这样的。

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

这将"someData"每隔 1 分钟定期向客户端套接字发送一次。

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

mar*_*aos 5

为什么不使用 setInterval / setTimeout ?

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

如果你想在没有图书馆的情况下,每一分钟:

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);
});
Run Code Online (Sandbox Code Playgroud)

如果准确性很重要,那么您会需要类似 https://github.com/kelektiv/node-cron的东西。