Node.js是否在线检测用户

Node.js是否在线检测用户,node.js,session,cookies,Node.js,Session,Cookies,我正在使用Node.js实现一个系统来检测用户是否在线 以下是我使用的方法: 将每个用户的默认会话最大值设置为30秒 让每个用户每20秒向服务器发送一个延长会话的信号 一旦他们离线并停止发送信号,他们的会话就会过期 然而,我发现stackoverflow上的另一篇帖子说,要检测离线用户,我们可以: req.session.cookie.expires = false; 那么一旦用户关闭浏览器,会话将自动过期 有人能告诉我这是一个正确的解决方案吗?谢谢大家! 否,这取决于浏览器,并且不可靠(从

我正在使用Node.js实现一个系统来检测用户是否在线

以下是我使用的方法:

  • 将每个用户的默认会话最大值设置为30秒

  • 让每个用户每20秒向服务器发送一个延长会话的信号

  • 一旦他们离线并停止发送信号,他们的会话就会过期

  • 然而,我发现stackoverflow上的另一篇帖子说,要检测离线用户,我们可以:

    req.session.cookie.expires = false;
    
    那么一旦用户关闭浏览器,会话将自动过期


    有人能告诉我这是一个正确的解决方案吗?谢谢大家!

    否,这取决于浏览器,并且不可靠(从后端角度看,会话将永远不会过期)。您的解决方案很好,几乎尽可能好(只有使用WebSocket才能更好)。只要您的服务器(节点和会话提供程序)能够处理用户发送心跳/ping的攻击,这是一种常见的模式。您还可以只记录最后一次看到的时间戳,并将其用作活动用户的筛选器,而不是不断地终止和重新创建会话。