.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()
时,回调函数 (cb
) 将在当前服务器上完成.leave()
调用时执行。这不能保证集群中的其他服务器已经完成运行操作。- 在将
req
作为要取消订阅的套接字传递之前,请务必检查req.isSocket === true
。要使其正常工作,提供的req
必须来自套接字请求,而不仅仅是任何旧的 HTTP 请求。