因为我目前正在制作一个论坛系统,该系统可以加载新帖子/编辑而无需刷新页面。现在,对于没有实现 EventSource/WebSocket 的旧版浏览器,我想提供另一种选择:
每隔 X 秒,我就会获取一个 PHP 站点,该站点与五个最新消息相呼应。之后,我只是检查客户尚未看到哪些新闻并将更改应用到页面。
现在,我的问题是:您将如何确定客户端检索新更新的 X 间隔?我想以用户的连接为基础,这样它就不会完全切断他的连接。
你会怎么做?
因为我目前正在制作一个论坛系统,该系统可以加载新帖子/编辑而无需刷新页面。现在,对于没有实现 EventSource/WebSocket 的旧版浏览器,我想提供另一种选择:
每隔 X 秒,我就会获取一个 PHP 站点,该站点与五个最新消息相呼应。之后,我只是检查客户尚未看到哪些新闻并将更改应用到页面。
现在,我的问题是:您将如何确定客户端检索新更新的 X 间隔?我想以用户的连接为基础,这样它就不会完全切断他的连接。
你会怎么做?
我会做以下事情(代码未经测试,但你应该明白)。使用 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()
函数仅在接收到数据并显示给用户后才被调用。
只是一个想法:发出一个 HTTP 请求,看看它需要多长时间并将其用作基础!我会重复一遍,每 10 分钟说一次,以表明我对客户的考虑程度!
我认为它在服务器端long polling
比 . :)
在您的情况下,我会使用长轮询技术AJAX
:
1) 客户端向服务器发送 AJAX HTTP 请求。
2)如果有可用数据,服务器向客户端发送 HTTP 请求,否则服务器不会立即发送空响应,而是保留请求并等待信息可用(或等待合适的超时事件 - 例如,在每个25 秒),之后最终向客户端发送完整的响应。
3)客户端收到HTTP-respose后,立即向服务器发送其他HTTP-request。