Какая разница между io.sockets.emit и трансляцией?

В чем разница между 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
});

Ответ 2

socket.broadcast.emit() ведет себя аналогично io.sockets.emit, но вместо этого испускания всех подключенных сокетов, он будет излучать все подключенные сокет, за исключением того, на который он вызывается. Таким образом, в этом случае сокет ссылка socket не получит событие.

Ответ 3

Сценарий: 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"});

Заключение: теперь это полностью зависит от нашего бизнес-требования, который будет предпочтительнее.