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"});
结论: – 现在完全取决于我们的业务要求,哪一个更好。