.broadcast()ルーム内のすべてのソケット(または特定のソケット)にメッセージをブロードキャストします。
sails.sockets.broadcast(roomNames, data);
または
sails.sockets.broadcast(roomNames, eventName, data);sails.sockets.broadcast(roomNames, data, socketToOmit);sails.sockets.broadcast(roomNames, eventName, data, socketToOmit);| 引数 | 型 | 詳細 | |
|---|---|---|---|
| 1 | roomNames | メッセージをブロードキャストする1つ以上のルームの名前(sails.sockets.joinを参照)。個々のソケットにブロードキャストするには、それらのIDをルーム名として使用します。 | |
| 2 | eventName | オプション。クライアントがこのメッセージを識別するために使用する一意のイベント名。デフォルトは'message'です。 |
|
| 3 | data | メッセージで送信するデータ。 | |
| 4 | socketToOmit | オプション。指定した場合、指定されたソケットリクエストに属するソケットは、メッセージを受信しません。これは、クライアントからブロードキャストをトリガーしたが、そのクライアント自体がメッセージを受信したくない場合(たとえば、チャットルームの他の全員にメッセージを送信する場合)に役立ちます。 |
サーバー上のアクション、サービス、または任意のスクリプト内
sails.sockets.broadcast('artsAndEntertainment', { greeting: 'Hola!' });
クライアント側
io.socket.on('message', function (data){
console.log(data.greeting);
});
sails.sockets.brodcast()の使用例の詳細については、こちらをご覧ください。複数のルームへのブロードキャスト、カスタムイベント名の使用、リクエスト元のソケットの除外などが含まれています。
sails.sockets.broadcast()は、Socket.IOの.emit()および.broadcast()の機能とほぼ同等です。- すべてのソケットは、そのIDを名前とするルームに自動的にサブスクライブされます。これにより、
sails.sockets.broadcast()を介してソケットに直接メッセージを送信できます。reqをsocketToOmitとして渡す前に、必ずreq.isSocket === trueであることを確認してください。リクエスト元のソケットを除外するには、リクエスト(req)が単なる古いHTTPリクエストではなく、ソケットリクエストからのものでなければなりません。dataはJSONシリアライズ可能でなければなりません。つまり、プレーンな辞書/配列を使用し、データに循環参照が含まれていないことを確認するのが最適です。確信がない場合は、ブロードキャストのdataを手動で構築するか、最初にrttc.dehydrate(data,true,true)のようなものを呼び出してください。