由于我目前正在制作一个论坛系统,无需刷新页面即可加载新的帖子/编辑。现在,对于没有EventSource / WebSocket实现的旧版浏览器,我想提供另一个选项:
每隔X秒,我就会得到一个PHP网站,它回应了最新的五条新闻。之后,我只是检查客户端尚未看到哪些新闻并将更改应用到页面。
现在,我的问题是:您如何确定客户端检索新更新的X间隔?我想基于用户的连接建立它,这样就不会完全消除他的连接。
您尝试完成此操作会是什么?
答案 0 :(得分:1)
我会在您的案例中使用long polling技术{/ 1}}:
1)客户端将AJAX HTTP请求发送到服务器。
2)如果有可用数据,服务器会向客户端发送HTTP请求,否则服务器不会立即发送空响应,而是等待信息变为可用(或者用于合适的超时事件 - 例如,每隔25秒),之后最终将完整的响应发送给客户。
3)收到HTTP-respose后,客户端会立即向服务器发送其他HTTP请求。
答案 1 :(得分:1)
我会做以下(代码未经过测试,但您应该明白这一点)。使用jQuery实现更简单的代码。
function refreshNews() {
$.ajax({
url: "ajax-url"
}).done(function(data){
/** add code here */
setTimeout(function(){ refreshNews(); }, 30000); // 30 secs should be enough to read some headlines
});
}
refreshNews();
这样,只有在收到数据并向用户显示后才会调用refreshNews()
函数。
答案 2 :(得分:1)
只是一个想法:发出HTTP请求并查看需要多长时间并将其用作基础!我重复一遍,让我们说每10分钟就能说明我对客户的看法!
我认为与long polling
相比,它在服务器端更具资源友好性,特别是对于人们不会在不到10小时内离开页面的论坛等脚本。 :)