.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)
のようなものを呼び出してください。