В чем разница между 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
});
socket.broadcast.emit
то время как этот API нигде не документирован.socket.broadcast.emit
и они получат его, но не вы.socket.broadcast.emit()
ведет себя аналогичноio.sockets.emit
, но вместо того, чтобы излучать все подключенные сокеты, он будет излучать все подключенные сокеты, кроме того, на котором он вызывается. Таким образом, в этом случае сокет, на который указывает ссылка,socket
не получит событие.источник
Сценарий: 1: - При использовании io.sockets.emit Подробная диаграмма: -io.sockets.emit
Сценарий: 2: - С помощью socket.broadcast.emit Подробная диаграмма: -socket.broadcast.emit
Вывод: - Теперь полностью зависит от требований нашего бизнеса, какое из них будет предпочтительнее.
источник