通过ajax流式传输数据

时间:2012-02-15 23:40:26

标签: javascript ajax streaming

我想在请求完成之前访问AJAX数据,有效地实现这样的流式传输:

ajax_request.send();
interval = setInterval(function() {
    continueParsing(ajax_request.responseText);
    if (download_complete)
        clearInterval(interval);
}, 64);

现在我有一个PHP的东西将请求分解成更小的块,但我宁愿一气呵成。什么是最好的方法(我只关心Chrome和Firefox)。

2 个答案:

答案 0 :(得分:6)

好吧,从这样的PHP处理程序开始:

$content = file_get_contents('http://pplware.sapo.pt/feed/');
for($i = 0; $i < 10; $i++){
   $content .= $content;
}
echo $content;

和这样的javascript:

var client = new XMLHttpRequest();
client.open('get', 'ajax.php');
client.send();
client.onprogress = function(){
    console.log(this.responseText.length);              
}

我得到这个控制台:

11183
137415984
1311572876
1313769728

所以,它有效......我想你可以弄清楚其余部分:)

答案 1 :(得分:2)

您最好使用WebSockets来执行此类操作,并为旧版浏览器提供适当的后备(例如以AJAX长轮询的形式)。

由于你正在使用PHP,快速谷歌搜索出现了这个项目 - http://code.google.com/p/phpwebsocket/,它可以提供一种简单的方法。如果浏览器不支持websockets,我不知道它是否有其他技术的后备,但如果不支持websockets,你可以将socket.io-client置于其顶部,只需使用phpwebsocket项目即可提供您的服务器层。