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.broadcast.emit()
はio.sockets.emit
と同様に動作しますが、接続されているすべてのソケットに発信する代わりに、呼び出されているソケットを除くすべての接続されたソケットに発信します。したがって、この場合、socket
によって参照されるソケットはイベントを受信しません。
シナリオ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"});
結論:-今は、どちらが望ましいかはビジネス要件に完全に依存します。