io.sockets.emit和broadcast有什么区别?

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 }); 

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

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

这个Socket.IO Wiki文章将帮助大家阅读这个问题:

socket.broadcast.emit()行为类似于io.sockets.emit ,但不是发送到所有连接的套接字,而是发送到所有连接的套接字(除了被调用的套接字之外)。 所以在这种情况下,由套接字引用的socket将不会收到事件。

场景:1: – 通过使用io.sockets.emit 详细图:-io.sockets.emit

这里每个套接字都得到包含启动器的消息。

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

场景:2: – 通过使用socket.broadcast.emit 详细图表:-socket.broadcast.emit

在这里每个套接字都得到消息,除了一个即发起者

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

结论: – 现在完全取决于我们的业务要求,哪一个更好。