Javascript ajax上的流数据
我希望在请求完成之前访问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_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,浏览器责备了我。我想我只需要进步。(我正在发送二进制数据,但它是以字符串形式出现的)。