.leave()
ソケットをルームから登録解除します。
sails.sockets.leave(socket, roomName);
または
sails.sockets.leave(socket, roomName, cb);
引数 | 型 | 詳細 | |
---|---|---|---|
1 | socket | 登録解除するソケット。着信ソケットリクエスト (req) または別のソケットの ID を指定できます。 | |
2 | roomName | ソケットを登録解除するルームの名前。 | |
3 | _cb_ | オプションのコールバック。現在のサーバーでの操作が完了したとき(詳細については以下の注を参照)、または致命的なエラーが発生した場合に呼び出されます。エラーが発生した場合、単一の引数(err )で呼び出されます。 |
コントローラーアクションで、指定されたルームからリクエスト元のソケットを登録解除します。
leaveFunRoom: function(req, res) {
if ( _.isUndefined(req.param('roomName')) ) {
return res.badRequest('`roomName` is required.');
}
if (!req.isSocket) {
return res.badRequest('This endpoints only supports socket requests.');
}
var roomName = req.param('roomName');
sails.sockets.leave(req, roomName, function(err) {
if (err) {return res.serverError(err);}
return res.json({
message: 'Left a fun room called '+roomName+'!'
});
});
}
sails.sockets.leave()
の使用例は、こちらで確認できます。これには、ID による他のソケットの登録解除、データベースとのより深い統合、サービス内での使用、async
ライブラリとの使用が含まれます。
sails.sockets.leave()
は、Socket.IO の.leave()
の機能とほぼ同等ですが、マルチサーバーデプロイメントに対する追加の組み込みサポートがあります。推奨される本番環境設定では、コードがどのサーバーで実行されているか、またはターゲットソケットが接続されているサーバーに関係なく、sails.sockets.leave()
はドキュメントどおりに動作します。- マルチサーバー環境で、ソケットID引数を使用して
.leave()
を呼び出すと、.leave()
呼び出しが現在のサーバーで完了したときにコールバック関数(cb
)が実行されます。これは、クラスター内の他のサーバーが既に操作の実行を完了していることを保証するものではありません。- 登録解除するソケットとして
req
を渡す前に、req.isSocket === true
であることを確認してください。それが機能するためには、提供されたreq
はソケットリクエストからのものであり、単なる古いHTTPリクエストであってはなりません。