在socket.io中使用emit进行循环

问题描述 投票:0回答:1

我有一个使用 socket.io、express、node.js 设置的基本网络聊天应用程序。 出于测试目的,我试图让客户端向另一个客户端发送给定数量的消息。我已经设置了一个 for 循环并尝试了许多变体(也使用 while 循环),但我总是以无限循环结束。我还尝试过控制台日志记录,它按预期工作。问题似乎出在“socket.emit”上。使用时有什么需要特别注意的吗?

我的代码:

  for (let i = 0; i < 4; i++) {
    setInterval(function(){
      socket.emit("broadcast message", "test client", ++i);
      }, 2000);
    }

在本例中,我想将消息“test client”发送到另一个客户端四次然后结束,但它只是在无限循环中不断触发四四条消息。

javascript express for-loop socket.io emit
1个回答
0
投票

正如评论中所指出的,“循环”是通过使用 setInterval 创建的。

实现您要求的一种方法是:

for (let i = 0; i < 4; i++) {
  setTimeout(() => {
    socket.emit('broadcast message', 'test client', i);
  }, i * 2000);
}
© www.soinside.com 2019 - 2024. All rights reserved.