1

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

每隔 X 秒,我就会获取一个 PHP 站点,该站点与五个最新消息相呼应。之后,我只是检查客户尚未看到哪些新闻并将更改应用到页面。

现在,我的问题是:您将如何确定客户端检索新更新的 X 间隔?我想以用户的连接为基础,这样它就不会完全切断他的连接。

你会怎么做?

4

3 回答 3

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()函数仅在接收到数据并显示给用户后才被调用。

于 2013-09-05T15:29:21.000 回答
1

只是一个想法:发出一个 HTTP 请求,看看它需要多长时间并将其用作基础!我会重复一遍,每 10 分钟说一次,以表明我对客户的考虑程度!

我认为它在服务器端long polling比 . :)

于 2013-09-05T15:30:30.787 回答
1

在您的情况下,我会使用长轮询技术AJAX

1) 客户端向服务器发送 AJAX HTTP 请求。

2)如果有可用数据,服务器向客户端发送 HTTP 请求,否则服务器不会立即发送空响应,而是保留请求并等待信息可用(或等待合适的超时事件 - 例如,在每个25 秒),之后最终向客户端发送完整的响应。

3)客户端收到HTTP-respose后,立即向服务器发送其他HTTP-request。

于 2013-09-05T14:54:16.107 回答