2013-09-05 41 views
1

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

每隔X秒,我将GET一个PHP站点,它回显了最新的五条新闻。之后,我只是简单地检查哪些消息尚未被客户看到,然后将更改应用到页面上。

现在,我的问题是:如何确定客户端检索新更新的X间隔?我想将它建立在用户的连接基础上,以便它不会完全阻止他的连接。

你会怎么做到这一点?

回答

1

我会用通过AJAXlong polling技术,你的情况:

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

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

+0

这应该是一个评论,而不是一个答案。 –

+0

@AleksG我已添加更多详细信息 – zavg

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()功能只在数据被接收并显示给用户后调用。

1

只是一个想法:做一个HTTP请求,看看它需要多长时间,并使用它作为基础!我会重复一遍,让我说每10分钟就会显示出我对客户的想法。

我认为它在服务器端比long polling更为资源友好,特别是对于人们不会离开页面少于10个小时的论坛等脚本。 :)