Was ist der Unterschied zwischen io.sockets.emit und socket.broadcast.emit? Wird nur die Sendung an alle gesendet, ABER an den Socket, der sie sendet?
Es scheint, dass sie austauschbar verwendet werden können:
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
während diese API nirgendwo dokumentiert wird.socket.broadcast.emit
und sie erhalten sie, aber nicht Sie.socket.broadcast.emit()
verhält sich ähnlich wieio.sockets.emit
, sendet jedoch nicht an alle angeschlossenen Sockets, sondern an alle angeschlossenen Sockets mit Ausnahme des Sockets, auf dem es aufgerufen wird. In diesem Fallsocket
erhält der Socket, auf den verwiesen wird, das Ereignis nicht.quelle
Szenario: 1: - Mit io.sockets.emit Detailliertes Diagramm: -io.sockets.emit
Szenario: 2: - Bei Verwendung von socket.broadcast.emit Detailliertes Diagramm: -socket.broadcast.emit
Fazit: - Jetzt hängt es ganz von unserer Geschäftsanforderung ab, welche vorzuziehen ist.
quelle