我是sails.js(node.js)的新手。现在获得在线用户数量的最佳方法是什么?
答案 0 :(得分:3)
我不确定这是否是最佳方式,但一种方法是使用网络套接字。
在客户端,当有人连接时,它可以发送用户名或电子邮件,因此您可以在服务器端保留在线用户列表。
然后,在Web套接字断开连接上,您将从在线用户列表中删除该用户。
你去了,你有在线用户的数量。
有关如何使用网络套接字的详细信息,请查看 http://socket.io/
我希望它有所帮助。 :)
答案 1 :(得分:1)
对于迟到的回复感到抱歉,但在#sails.js
中出现过几次我不知道我的方式是否一定是正确的,但它的工作方式是0.9.4,这是我迄今为止找到的最佳方式:
// if sails is undefined, get it out of global
var sails = global.sails,
ws = sails.ws,
channel = req.param('channel') || '', // by room, or '' for top level
current = ws.of(channel).manager.open; // an array of socket ids
如果您没有使用ws
,sails.io
也可以使用(结构略有不同)。请致电current.length
以获取已连接客户端的数量 - 或者您可以执行类似的操作:
var status = [];
for (var x in current) {
if (ws.of(channel).manager.handshaken.hasOwnProperty(x)) {
status.push(ws.of(channel).manager.handshaken[x].session.user);
}
}
答案 2 :(得分:0)
您可以使用一组活动会话。我建议不要使用socket.io来计算用户,因为它没有100%的回退(在某些情况下需要flash)
答案 3 :(得分:0)
每次新的套接字连接到服务器时,风帆会自动添加新房间,我认为如果您不添加新的自定义房间,它们的数量就是在线用户的数量。
检查一下: sails.sockets.rooms()
但我确信这不是解决方案,我正在寻找更好的方法。