node.js - rooms - ¿Cuál es la diferencia entre io.sockets.emit y broadcast?
socket.io express (3)
Escenario: 1: - Mediante el uso de io.sockets.emit Diagrama detallado: -io.sockets.emit
Aquí Every Socket recibe el mensaje, incluido el Iniciador .
// BY IO>SOCKETS>EMIT
io.sockets.emit(''MyChannelBroadcast'',
{
owner:"Anshu Ashish",
clientCount:clients,
message:"Welcome All"
}
);
Escenario: 2: - Mediante el uso de socket.broadcast.emit Diagrama detallado: -socket.broadcast.emit
Aquí todos los sockets reciben mensaje excepto uno, es decir, el iniciador .
// BY SOCKET>BROADCAST>EMIT
socket.broadcast.emit(''BroadCastExceptMe'',{data:"HAVE A NICE DAY"});
Conclusión: - Ahora dependerá totalmente de los requisitos de nuestra empresa, cuál de ellos será preferible.
¿Cuál es la diferencia entre io.sockets.emit y socket.broadcast.emit? ¿Es solo que la emisión emite a todos pero el zócalo que lo envía?
Parece que se pueden usar indistintamente:
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
enviará a todos los clientes
socket.broadcast.emit
enviará el mensaje a todos los otros clientes excepto a la conexión recién creada
Esta publicación en Wiki Socket.IO ayudará a todos a leer esta pregunta:
socket.broadcast.emit()
comporta de forma similar a io.sockets.emit
, pero en lugar de emitir a todos los sockets conectados, se emitirá a todos los conectores conectados excepto al que se está llamando. Entonces, en este caso, el socket al que hace referencia el socket
no recibirá el evento.