web-dev-qa-db-ja.com

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

io.sockets.emitはすべてのクライアントに送信します

socket.broadcast.emitは、新しく作成された接続を除く他のすべてのクライアントにメッセージを送信します

このSocket.IO Wikiの投稿は、この質問を読んでいるすべての人に役立ちます:

162

socket.broadcast.emit()io.sockets.emitと同様に動作しますが、接続されているすべてのソケットに発信する代わりに、呼び出されているソケットを除くすべての接続されたソケットに発信します。したがって、この場合、socketによって参照されるソケットはイベントを受信しません。

44
Karthic Rao

シナリオ1 ::io.sockets.emit詳細図:-io.sockets.emit の使用

ここで、すべてのソケットはInitiatorを含むメッセージを取得します。

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

シナリオ:2:-socket.broadcast.emit詳細図:-socket.broadcast.emit の使用

ここでは、すべてのソケットが1つを除くメッセージ、つまりInitiatorを取得しています。

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

結論:-今は、どちらが望ましいかはビジネス要件に完全に依存します。

6
Anshu Ashish