Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ajax上的流数据_Javascript_Ajax_Streaming - Fatal编程技术网

Javascript ajax上的流数据

Javascript ajax上的流数据,javascript,ajax,streaming,Javascript,Ajax,Streaming,我希望在请求完成之前访问AJAX数据,以便有效地实现如下流式处理: ajax_request.send(); interval = setInterval(function() { continueParsing(ajax_request.responseText); if (download_complete) clearInterval(interval); }, 64); $content = file_get_contents('http://pplwa

我希望在请求完成之前访问AJAX数据,以便有效地实现如下流式处理:

ajax_request.send();
interval = setInterval(function() {
    continueParsing(ajax_request.responseText);
    if (download_complete)
        clearInterval(interval);
}, 64);
$content = file_get_contents('http://pplware.sapo.pt/feed/');
for($i = 0; $i < 10; $i++){
   $content .= $content;
}
echo $content;
var client = new XMLHttpRequest();
client.open('get', 'ajax.php');
client.send();
client.onprogress = function(){
    console.log(this.responseText.length);              
}

现在我有一个php工具可以将请求分解成更小的块,但我宁愿一次完成。最好的方法是什么(我只关心Chrome和Firefox)。

您最好使用WebSocket来做这类事情,并为较旧的浏览器提供适当的回退(比如以AJAX长轮询的形式)


因为您使用的是PHP,所以快速的google搜索出现了这个项目——这可以提供一种简单的方法。如果浏览器不支持WebSocket,我不知道它是否有其他技术的退路,但如果它不支持WebSocket,您可能可以将它放在上面,然后使用phpwebsocket项目来提供您的服务器层。

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

ajax_request.send();
interval = setInterval(function() {
    continueParsing(ajax_request.responseText);
    if (download_complete)
        clearInterval(interval);
}, 64);
$content = file_get_contents('http://pplware.sapo.pt/feed/');
for($i = 0; $i < 10; $i++){
   $content .= $content;
}
echo $content;
var client = new XMLHttpRequest();
client.open('get', 'ajax.php');
client.send();
client.onprogress = function(){
    console.log(this.responseText.length);              
}
我得到这个控制台:

11183
137415984
1311572876
1313769728

所以,它起作用了。。。。我想你可以解决剩下的问题:)

好问题,我认为这适用于HTML5规范,但我一定会尝试找出PHP发送的是什么样的数据?关于套接字的好主意!我甚至不知道它们存在于Javascript中。然而,我认为ajax_request.onprogress是我所需要的一切。太棒了,谢谢!我想我以前在请求过程中使用过responseText,浏览器责备了我。我想我只需要进步。(我正在发送二进制数据,但它是以字符串形式出现的)。