是否可以在不使用 ajax 请求的情况下检查用户是否在线


Is it possible to check if users are online without using ajax request?

如果可能的话,我正在寻找一种解决方案,可以在不使用ajax(实时(的情况下显示在线用户/朋友。我想避免在每个指定的时间间隔后向服务器发出的 ajax 请求,以检查用户是否在线。目前,该应用程序运行良好并显示在线用户,但是向服务器提出了大量请求,以使用ajax方法检查用户是否在线。此外,由于大量的 ajax 调用,有时浏览器行为也会受到影响。 [更多信息:我正在使用MySql数据库,PHP,Jquery。

我的建议是每次用户访问页面时更新数据库中的字段。 要确定他们是否仍然在线,请检查此最后一次访问是否在特定时间间隔内(如 20 分钟前(。 如果不是,则假定它们处于脱机状态。

这可能是最简单的方法,尽管它并不完全是"实时的"。 如果我通过关闭浏览器离开您的网站,那么直到 20 分钟后我才会显示为"离线"。

以下是您应该如何做到这一点的明确看法:

  • 用户请求页面
  • 记录发出请求的时间(将用户标记为活动(
  • 获取最近
  • 服务页面

基本上,每次页面加载都会刷新用户的"上次看到"时间,如果用户在阈值内,则认为用户处于活动状态。大于此值,用户处于非活动状态。大多数聊天客户端在 15 分钟不执行任何操作(例如击键等(后将用户标记为非活动状态,在我们的例子中,执行页面加载。

如果需要实时数据,没有其他(更好的(方法可以比使用 AJAX(间隔轮询和连接保持(了。除了 ajax 之外,我之前使用过的一些粗略技术来触发页面加载,包括:

  • 隐藏的、不断刷新的 iframe 或加载好友列表的 iframe 间隔
  • 间隔加载 1x1,使用路由 URL 缓存破坏的 GIF,以便它通过日志记录机制。

你可以使用WebSockets,但到目前为止,它远非跨浏览器,除非你使用flash和ExternalInterfaceCall的套接字功能从flash调用JS。

以某种方式,

您将不得不在时间间隔后对服务器进行 ajax 调用以进行通信/获取在线用户。

相关文章: