4

タイムアウトの結果など、ソケットに関連しないイベントの結果として、開いているすべてのソケットにメッセージをブロードキャストしたいと考えています。どうすればいいですか?開いているすべてのソケットの配列を保持し、1 つずつメッセージを送信する必要がありますか? より良い方法はありますか?

注: socket.io ガイドのブロードキャストの例では、ソケット接続に応答してブロードキャスト メッセージを送信するため、ソケットへのハンドルがあります。それでも言う

ブロードキャストとは、メッセージを開始するソケットを除くすべての人にメッセージを送信することを意味します。

編集 私の質問を明確にするために、開いているすべてのソケットに「メッセージを送信」し​​たいと思います。このアクションはどのソケットによってもトリガーされないため、「このソケット」はありません。たとえば、サーバー上のビジネス ロジックによって、注文が実行されたと判断されたとします。この情報は、開いているすべてのソケットに送信する必要があります。これを行う最善の方法は何ですか?(これは、socket.io で定義されている「ブロードキャスト」ではありません。)

4

2 に答える 2

2

したがって、基本的には、接続されているすべてのクライアントをソケットに接続する必要があります

var clients = io.sockets.clients(); // This returns an array with all connected clients

for ( i = 0; i < clients.length; i++ ) {
    clients[i].emit('event', { data: 'message' });
}

これは、接続されているすべてのクライアントに送信されます。

于 2013-01-28T07:26:00.203 に答える
0
socket.broadcast.emit('event name', { data : 'your data' });

このソケットを除く、開いているすべてのソケットにブロードキャストします。

于 2013-01-27T17:21:22.753 に答える