确定更新时间

时间:2013-09-05 14:49:31

标签: php javascript html

由于我目前正在制作一个论坛系统,无需刷新页面即可加载新的帖子/编辑。现在,对于没有EventSource / WebSocket实现的旧版浏览器,我想提供另一个选项:

每隔X秒,我就会得到一个PHP网站,它回应了最新的五条新闻。之后,我只是检查客户端尚未看到哪些新闻并将更改应用到页面。

现在,我的问题是:您如何确定客户端检索新更新的X间隔?我想基于用户的连接建立它,这样就不会完全消除他的连接。

您尝试完成此操作会是什么?

3 个答案:

答案 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小时内离开页面的论坛等脚本。 :)