在套接字 io 中定期向所有套接字发送

Emit to all sockets on regular interval in socket io

我想知道如何定期向套接字发送消息,目前我正在这样做:

io.on('connection', function(socket){

setInterval(function () {
        socket.emit('message', variable);
}, 100);

...

然后每个用户都有一个间隔,每 100 毫秒发送一次消息。有更好的方法吗?

我也对 emit 的工作原理感到困惑:我的印象是它将消息发送到所有套接字,但是如果我只为第一个连接的套接字而不是以下套接字启动这个间隔,只有第一个套接字接收消息?

使用io.emit 发射到所有连接的套接字。您仍然可以间隔执行此操作。

// Only needed if you have to do something with a specific socket
io.on('connection', handleSocket);

setInterval(() => {
    io.emit('message', variable);
}, 100);

只是不要忘记在套接字连接关闭时调用 clearInterval() 函数。