我是sails.js(node.js)的新手。现在获得在线用户数量的最佳方法是什么?
问问题
1536 次
4 回答
3
我不确定这是否是最好的方法,但一种方法可能是使用网络套接字。
在客户端,当有人连接时,它可以发送用户名或电子邮件,因此您可以在服务器端保留在线用户列表。
然后在 Web 套接字断开连接时,从在线用户列表中删除该用户。
你去,你有在线用户的数量。
查看http://socket.io/以获取有关如何使用 Web 套接字的更多信息
我希望它有所帮助。:)
于 2013-08-22T21:49:26.130 回答
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);
}
}
- 找出他们是谁。:) HTH
于 2013-09-13T12:14:40.303 回答
0
将有一个您可以使用的活动会话池。我建议不要使用 socket.io 来计算用户,因为它没有 100% 的回退(在某些情况下需要闪存)
于 2013-09-06T14:40:47.840 回答
0
每次一个新的套接字连接到服务器时,sails 都会自动添加一个新房间,如果你不添加新的自定义房间,我认为它们的数量是在线用户的数量。
检查这个:sails.sockets.rooms()
但我确信这不是解决方案,我正在寻找更好的方法。
于 2015-11-09T22:15:47.117 回答