Jaka jest różnica między io.sockets.emit i socket.broadcast.emit? Czy to tylko ta transmisja jest wysyłana do wszystkich ALE gniazdo, które ją wysyła?
Wygląda na to, że można ich używać zamiennie:
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
podczas gdy API nigdy nie jest nigdzie dokumentowane.socket.broadcast.emit
a oni ją otrzymają, ale nie Ty.socket.broadcast.emit()
zachowuje się podobnie doio.sockets.emit
, ale zamiast emitować do wszystkich podłączonych gniazd, będzie emitować do wszystkich podłączonych gniazd z wyjątkiem tego, do którego jest wywoływane. Więc w tym przypadku gniazdo, do którego odwołuje się odwołaniesocket
, nie otrzyma zdarzenia.źródło
Scenariusz: 1: - Dzięki zastosowaniu io.sockets.emit szczegółowy schemat: -io.sockets.emit
Scenariusz: 2: - Przy użyciu socket.broadcast.emit Szczegółowy diagram: -socket.broadcast.emit
Wniosek: - Teraz będzie to całkowicie zależało od naszych wymagań biznesowych, który z nich będzie lepszy.
źródło