我有一个使用 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”发送到另一个客户端四次然后结束,但它只是在无限循环中不断触发四四条消息。
正如评论中所指出的,“循环”是通过使用 setInterval 创建的。
实现您要求的一种方法是:
for (let i = 0; i < 4; i++) {
setTimeout(() => {
socket.emit('broadcast message', 'test client', i);
}, i * 2000);
}