Sails.js。如何计算在线用户?

时间:2013-07-30 14:31:51

标签: javascript node.js sails.js

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

4 个答案:

答案 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 

如果您没有使用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

答案 2 :(得分:0)

您可以使用一组活动会话。我建议不要使用socket.io来计算用户,因为它没有100%的回退(在某些情况下需要flash)

答案 3 :(得分:0)

每次新的套接字连接到服务器时,风帆会自动添加新房间,我认为如果您不添加新的自定义房间,它们的数量就是在线用户的数量。

检查一下: sails.sockets.rooms()

但我确信这不是解决方案,我正在寻找更好的方法。

相关问题