io.sockets.emit与广播有什么区别?

时间:2012-04-26 23:10:59

标签: node.js socket.io

io.sockets.emit和socket.broadcast.emit有什么区别?只是广播向所有人发出但是发送它的套接字?

似乎它们可以互换使用:

io.sockets.on('connection', function (socket) {
  //these should do the same thing  
  io.sockets.emit('this', { receivers: 'everyone'});

  socket.broadcast.emit('this', { receivers: 'everyone but socket'}); //emits to everyone but socket
  socket.emit('this', { receivers: 'socket'}); //emits to socket
});

3 个答案:

答案 0 :(得分:160)

io.sockets.emit将发送给所有客户

socket.broadcast.emit会将消息发送给除新创建的连接之外的所有其他客户端

This Socket.IO Wiki post will help everyone reading this question:

答案 1 :(得分:43)

socket.broadcast.emit()的行为与io.sockets.emit类似,但相反 发射到所有连接的插座,它将发射到所有连接的 套接字除了它被调用的那个。所以在这种情况下插座 由socket引用将不会收到该事件。

答案 2 :(得分:6)

场景:1: - 使用 io.sockets.emit Detailed Diagram:-io.sockets.emit

  

此处每个Socket都会收到消息,包括启动器

  // BY IO>SOCKETS>EMIT
   io.sockets.emit('MyChannelBroadcast',
               {
                 owner:"Anshu Ashish",
                 clientCount:clients,
                 message:"Welcome All"
               }
    );

场景:2: - 使用 socket.broadcast.emit Detailed Diagram:-socket.broadcast.emit

  

此处每个套接字都会收到除一个启动器之外的消息。

    // BY SOCKET>BROADCAST>EMIT
   socket.broadcast.emit('BroadCastExceptMe',{data:"HAVE A NICE DAY"});

结论: - 现在,完全取决于我们的业务需求,哪一个更受欢迎。