Ответ 1
io.sockets.emit
отправит всем клиентам
socket.broadcast.emit
отправит сообщение всем другим клиентам, кроме вновь созданного соединения
Это сообщение Socket.IO Wiki поможет каждому, кто прочитает этот вопрос:
В чем разница между 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
});
io.sockets.emit
отправит всем клиентам
socket.broadcast.emit
отправит сообщение всем другим клиентам, кроме вновь созданного соединения
Это сообщение Socket.IO Wiki поможет каждому, кто прочитает этот вопрос:
socket.broadcast.emit()
ведет себя аналогично io.sockets.emit
, но вместо этого
испускания всех подключенных сокетов, он будет излучать все подключенные
сокет, за исключением того, на который он вызывается. Таким образом, в этом случае сокет
ссылка socket
не получит событие.
Сценарий: 1: - При использовании io.sockets.emit Подробная схема: -io.sockets.emit
Здесь каждый Socket получает сообщение, включая Инициатор.
// BY IO>SOCKETS>EMIT
io.sockets.emit('MyChannelBroadcast',
{
owner:"Anshu Ashish",
clientCount:clients,
message:"Welcome All"
}
);
Сценарий: 2: - При использовании socket.broadcast.emit Подробная схема: -socket.broadcast.emit
Здесь каждый сокет получает сообщение за исключением одного i.e инициатора.
// BY SOCKET>BROADCAST>EMIT
socket.broadcast.emit('BroadCastExceptMe',{data:"HAVE A NICE DAY"});
Заключение: теперь это полностью зависит от нашего бизнес-требования, который будет предпочтительнее.