¿Cuál es la diferencia entre io.sockets.emit y socket.broadcast.emit? ¿Es solo que la transmisión emite a todos, PERO al socket que la 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
});
socket.broadcast.emit
mientras que esa API nunca está documentada en ninguna parte.socket.broadcast.emit
y ellos lo recibirán, pero usted no.socket.broadcast.emit()
se comporta de manera similario.sockets.emit
, pero en lugar de emitir a todos los sockets conectados, emitirá a todos los sockets conectados excepto al que se está llamando. Entonces, en este caso, el socket al que se hace referenciasocket
no recibirá el evento.fuente
Escenario: 1: - Mediante el uso de io.sockets.emit Diagrama detallado: -io.sockets.emit
Escenario: 2: - Mediante el uso de socket.broadcast.emit Diagrama detallado: -socket.broadcast.emit
Conclusión: - Ahora dependerá totalmente de nuestro requerimiento comercial cuál será preferible.
fuente