.join()
ソケットをルームに登録します。
sails.sockets.join(socket, roomName);
または
sails.sockets.join(socket, roomName, cb);
引数 | 型 | 詳細 | |
---|---|---|---|
1 | socket | 登録するソケット。ソケットのIDまたは受信ソケットリクエスト (req ) で指定できます。 |
|
2 | roomName | ソケットを登録するルームの名前。ルームが存在しない場合は、作成されます。 | |
3 | _cb_ | オプションのコールバック。現在のサーバーで操作が完了したとき(詳細については以下の注を参照)、または致命的なエラーが発生した場合に呼び出されます。エラーの場合、単一の引数 (err ) を渡して呼び出されます。 |
コントローラアクション内
subscribeToFunRoom: function(req, res) {
if (!req.isSocket) {
return res.badRequest();
}
var roomName = req.param('roomName');
sails.sockets.join(req, roomName, function(err) {
if (err) {
return res.serverError(err);
}
return res.json({
message: 'Subscribed to a fun room called '+roomName+'!'
});
});
}
sails.sockets.join()
は、Socket.IO の.join()
の機能とほぼ同じですが、マルチサーバーデプロイメントの組み込みサポートが追加されています。推奨される本番環境設定では、sails.sockets.join()
は、コードがどのサーバーで実行されているか、またはターゲットソケットが接続されているサーバーに関係なく、ドキュメントどおりに機能します。- マルチサーバー環境で、ソケットID引数を使用して
.join()
を呼び出すと、コールバック関数 (cb
) は 現在のサーバー で.join()
呼び出しが完了したときに実行されます。これは、クラスター内の他のサーバーがすでに操作の実行を完了していることを保証するものではありません。- すべてのソケットは、そのIDを名前とするルームに自動的に登録されるため、
sails.sockets.broadcast()
を介してソケットに直接メッセージを送信できます。req
をターゲットソケットとして渡す前に、必ずreq.isSocket === true
を確認してください。これを機能させるには、提供されたreq
は、単なる古い HTTP リクエストではなく、ソケットリクエストからのものである必要があります。