我用php创建了一个小型CMS,如果其他用户在线或离线,我想显示登录用户。
目前,我只创建一个查询请求,但这不会一直更新。我希望用户看到immediatley的变化,如果发生了什么事情。我看起来像是一个类似facebook的解决方案。如果有人登录,则用户被标记为离线..如果他只是来,用户会看到它立即。
我敢肯定,最好的方法是使用ajax,但我不知道最佳解决方案是什么?
我应该创建一个只返回json的网站吗?
我需要一点建议,因为我不知道我还要谷歌。
非常感谢你的帮助:)。
答案 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之前。为此,必须解析为RFC2616或WebSockets等有状态协议。
答案 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>)");
}
});
})
}