如何监控用户的在线状态(实时)

时间:2017-03-05 17:25:49

标签: javascript php ajax

我用php创建了一个小型CMS,如果其他用户在线或离线,我想显示登录用户。

目前,我只创建一个查询请求,但这不会一直更新。我希望用户看到immediatley的变化,如果发生了什么事情。我看起来像是一个类似facebook的解决方案。如果有人登录,则用户被标记为离线..如果他只是来,用户会看到它立即。

我敢肯定,最好的方法是使用ajax,但我不知道最佳解决方案是什么?

我应该创建一个只返回json的网站吗?

我需要一点建议,因为我不知道我还要谷歌。

非常感谢你的帮助:)。

4 个答案:

答案 0 :(得分:2)

使用ajax请求进行池化将适用于少数用户,但随着人们使用您的CMS,他们将使用许多请求充斥Web服务器。然后,您将被迫降低请求频率或实现Gracefull降级等功能。

正确的方法是实现与websockets的通信,最终使用ajax long pooling的后续操作。您可以查看socket.io或其他Web套接字库。不幸的是,它不是websocket友好的,但这并非不可能。

答案 1 :(得分:1)

答案 2 :(得分:1)

来自HTTP / 1.1上的SyntaxNet

  

HTTP是一种通用的无状态协议......

所以不幸的是,没有办法实现" 实时"状态信息完全通过HTTP,至少在版本1.1之前。为此,必须解析为RFC2616WebSockets等有状态协议。

答案 3 :(得分:1)

感谢您的回答!

我找到了一个适合我的解决方案..

我创建了一个" users.php"输出带有我所有用户信息的json。

通过javascript我将json对象输出到我的html

function getAllUsers(){
  $.getJSON('online.php',function(data){
  $.each(data, function(i, data){
        if(data.user_status == 'online') {
          $("#online-user")
          .append("<tr><td>" + data.user_id + "</td><td>"
                  + data.user_name + "</td><td>"
                  + data.user_status + "</td></tr>)");
        }
   });
   })
}