Socket.io发出循环

时间:2016-12-23 00:01:35

标签: node.js socket.io

我想与我的socket.io" hooks"保持一致。我在下面使用这种格式非常一致,并且它似乎没有陷入无限循环。

// inside my nodejs app
socket.on('foo', function (data) { 
    socket.emit('foo'); 
}); 

当从客户端触发挂钩时它只运行一次,因此它似乎是安全的。但为什么它不会在服务器端进入无限循环?这是偶然还是设计?

1 个答案:

答案 0 :(得分:0)

这种行为是设计上的,不是巧合或意外

  • client:使用方法
  • 向服务器发送消息
  • server:从客户端接收带有事件处理程序的消息
  • 服务器:使用方法
  • 向客户端发送消息
  • client:从服务器接收带有事件处理程序的消息

服务器套接字从客户端接收消息 foo事件上的client.socket.emit('foo',aMessage)

socket.on('foo', function (data) {
    //then server emit a message to connected clients
    //not to server this is why not go through an infinite loop
    socket.emit('foo');
});

然后'客户'从服务器接收消息

chat.socket.on('foo', function(data){
    console.log('got new message from server...',data)
})