web-dev-qa-db-fra.com

Quelle est la différence entre io.sockets.emit et broadcast?

Quelle est la différence entre io.sockets.emit et socket.broadcast.emit? Est-ce seulement la diffusion qui émet à tout le monde MAIS le socket qui l'envoie?

Il semble qu'ils puissent être utilisés de manière interchangeable:

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
});
91
swiecki

io.sockets.emit enverra à tous les clients

socket.broadcast.emit enverra le message à tous les autres clients à l'exception de la nouvelle connexion

Cet article Wiki de Socket.IO aidera tout le monde à lire cette question:

162

socket.broadcast.emit() se comporte de la même façon que io.sockets.emit, mais au lieu d’émettre sur toutes les prises connectées, il émettra sur toutes les prises connectées, à l’exception de celle sur laquelle elle est appelée. Donc, dans ce cas, le socket référencé par socket ne recevra pas l'événement.

44
Karthic Rao

Scénario: 1: - En utilisant io.sockets.emit diagramme détaillé: -io.sockets.emit

Ici, chaque socket reçoit le message comprenant l'initiateur .

  // BY IO>SOCKETS>EMIT
   io.sockets.emit('MyChannelBroadcast',
               {
                 owner:"Anshu Ashish",
                 clientCount:clients,
                 message:"Welcome All"
               }
    );

Scénario: 2: - En utilisant socket.broadcast.emit diagramme détaillé: -socket.broadcast.emit

Ici, toutes les sockets reçoivent un message sauf un, c'est-à-dire un initiateur .

    // BY SOCKET>BROADCAST>EMIT
   socket.broadcast.emit('BroadCastExceptMe',{data:"HAVE A Nice DAY"});

Conclusion: - Maintenant, cela dépend totalement de nos exigences commerciales et de celles qui seront préférables.

6
Anshu Ashish