Web 您将如何实施“a”;“谁在网上?”;特征?

Web 您将如何实施“a”;“谁在网上?”;特征?,web,Web,我一直想在我的网站上实现“谁在线”功能 我想知道你如何决定用户是否在线 有些选择是: 最后一次看到,不到N分钟前(N是什么?) 具有长轮询的comet服务器 别的 如果您使用的是会话变量,则如果上次活动+会话到期>当前日期,则用户处于联机状态。否则,会话已过期,并且它们未联机 现在,这取决于人们能用这个“谁在线”功能做什么。您可能更喜欢一个更保守的度量,以便对用户的活动状态有更高的信心 但是,考虑到web的性质,除了偶尔需要用户交互之外,没有可靠的方法来确保用户在您的站点中真正在线并处于活动状态

我一直想在我的网站上实现“谁在线”功能

我想知道你如何决定用户是否在线

有些选择是:

  • 最后一次看到,不到N分钟前(N是什么?)
  • 具有长轮询的comet服务器
  • 别的

  • 如果您使用的是会话变量,则如果上次活动+会话到期>当前日期,则用户处于联机状态。否则,会话已过期,并且它们未联机

    现在,这取决于人们能用这个“谁在线”功能做什么。您可能更喜欢一个更保守的度量,以便对用户的活动状态有更高的信心


    但是,考虑到web的性质,除了偶尔需要用户交互之外,没有可靠的方法来确保用户在您的站点中真正在线并处于活动状态,但这会很烦人。

    我会选择选项1,并允许从配置文件中设置N。据推测,在某些数据存储中,用户活动是以时间戳记录的,因此计算用户是否被视为在线(不到N次前看到)应该非常简单。您可以考虑使用定期Ajax请求来定期更新用户的在线集合。

    也可以使用ping方法。大约每30-60秒从客户端向服务器发送一个轻ajax请求。尽量减少请求和响应以减少带宽,这应该与Comet方法的性能一样好。

    你会选择10/20/30分钟吗?@Sam:会话到期时间?用户自上次活动被视为在线的时间有多长?上次活动+会话到期时间此方法听起来不错。首先,当用户访问站点时,确定用户是否有AJAX,如果没有,则使用经典的超时机制。。。我认为谷歌可以做到这一点。你希望这个功能的实时性如何?我想说的是,如果他们的网站仍然开放,那么他们就处于活动状态。他们不一定要查看页面。当然,这一切都取决于你想如何使用这些信息。我只是认为,当一个标签没有打开时,不断地使用带宽是一种糟糕的做法。。。