4

我是sails.js(node.js)的新手。现在获得在线用户数量的最佳方法是什么?

4

4 回答 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 

如果您不使用wssails.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 回答