質問を説明する2つの図を追加しました。イベントが発生すると、データはリスナーまたはすべてのクライアントにのみ届きますか?
実際のイラストはありますか?もしそうなら、どちらが本当ですか?
イラストレーション1
イラスト2
質問を説明する2つの図を追加しました。イベントが発生すると、データはリスナーまたはすべてのクライアントにのみ届きますか?
実際のイラストはありますか?もしそうなら、どちらが本当ですか?
イラストレーション1
イラスト2
io.emit(msg, data)
は、そのサーバーに接続されているすべてのクライアントに送信されます。クライアントがそれを聞いているかどうかは関係ありませんmsg
。データはクライアントに送信され、クライアントにそのクライアントのリスナーがある場合は、msg
のイベントリスナーが呼び出されます。
クライアントにそのメッセージのリスナーがない場合、メッセージは到着しますがリスナーはありません。その時点で、リスナーのないイベントと同じです。イベントは発生しますが、リスナーがない場合、コールバックキューは空です。したがって、呼び出すイベントハンドラはありません。
2つの図の意図した違いはよく分かりませんが、最初の図はdata
が3つのクライアントすべてに送信されていることを正しく示しています。 2番目の図はそれを示していないので、正しくありません。
送信されるデータだけではないことに注意してください。 msg名もデータとともに送信されます。これは受信側のクライアントがイベントハンドラがどのトリガをトリガするかを知る方法です。
このようなクライアントを考えることができます。
io.emit()
が接続されているすべてのクライアントに送信します
、あなたはそれがに行く人を決定するメッセージを送信する方法についての選択肢があります。
socket.emit()
は、特定のクライアントソケットにのみ送信されます。
socket.broadcast.emit()
は、socket
で表されるものを除くすべての接続されたクライアントに送信されます。
socket.to(room).emit()
がその部屋のクライアントに送信されます。
io.of('chat').emit()
は、その名前空間に接続されたクライアントに送信します。
第一の方法は、より正確です。どのようにsocket.ioが動作するのかは、すべてのクライアントが関連するイベントを待ち受けていることです。ある人が「通過」すると、そのようなデータ形式を取ります。ここ
はsocket.ioの上に簡単な例である:
クライアントA: socket.on('attendance', data)
クライアントB: socket.on('leaving', data)
クライアントC: socket.on('attendance', data)
サーバー: io.emit('attendance', data)
クライアントA: if 'attendance' == 'attendance' //true; do something with data
クライアントB: if 'attendance' == 'leaving' //false; do nothing
クライアントC: if 'attendance' == 'attendance' //true; do something with data
は、この情報がお役に立てば幸い!
@Efkan - これはあなたの質問に答えましたか? – jfriend00
ありがとうございます。この答えは、私が探しているものです。だから、私は答えを受け入れました。素晴らしい週末を過ごしましょう! – efkan