【问题标题】:Logic on disconnect sails.js socket.io断开sails.js socket.io的逻辑
【发布时间】:2014-02-26 05:24:35
【问题描述】:
我将sails.js 与socket.io 的原始API 一起使用。现在,当用户断开连接时,我想通知其他所有人。通常我会这样做:
socket.on('disconnect', function () {
//disconnect logic
});
但我不确定如何在sails.js 控制器中完成此操作。任何帮助将不胜感激。
【问题讨论】:
标签:
javascript
node.js
socket.io
sails.js
【解决方案1】:
从 Sails v0.9.8 开始,您的 config/sockets.js 文件将同时具有 onConnect 和 onDisconnect 方法,可让您访问连接/断开连接的套接字和会话。
【解决方案2】:
我们可以使用 config/sockets.js 如下。
// config/sockets.js
onConnect: function(session, socket) {
// If a user is logged in, subscribe to them
if (session.user) {
User.subscribe(socket, session.user);
}
},
onDisconnect: function(session, socket) {
// If a user is logged in, unsubscribe from them
if (session.user) {
User.unsubscribe(socket, session.user);
// If the user has no more subscribers, they're offline
if (User.subscribers(session.user.id).length == 0) {
console.log("User "+session.user.id+" is gone!");
// Do something!
}
}
}
【解决方案3】:
对于 Sails 0.12.3
在config/sockets.js
// beforeConnect: function(handshake, cb) {
// // `true` allows the connection
// return cb(null, true);
//
// // (`false` would reject the connection)
// },
/***************************************************************************
* *
* `afterDisconnect` *
* *
* This custom afterDisconnect function will be run each time a socket *
* disconnects *
* *
***************************************************************************/
// afterDisconnect: function(session, socket, cb) {
// // By default: do nothing.
// return cb();
// },