2012-02-15 2 views
5

Я хочу получить доступ к данным AJAX, прежде чем запрос закончен, эффективно осуществлять потоковую вид, как это:Streaming данных через AJAX

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

Прямо сейчас у меня есть PHP штуковина, чтобы разбить запрос на меньшие куски , но я предпочел бы все за один раз. Каков наилучший способ сделать это (я только забочусь о Chrome и Firefox).

+0

отличный вопрос, я думаю, что это работает с спецификациями HTML5, но я обязательно постараюсь выяснить –

+0

, какие данные отправляются с PHP? –

ответ

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 

так, он работает .... я думаю, вы можете выяснить остальное :)

+0

Удивительный, спасибо! Я, хотя я использовал responseText раньше во время запроса, и браузер выговорил меня. Я думаю, что onprogress - это все, что мне нужно. (Я отправляю двоичные данные, но он входит в строку). – Chris

2

Вам лучше всего использовать WebSockets, чтобы делать подобные вещи и иметь соответствующий резерв для старых браузеров (скажем, в виде длинного опроса AJAX).

Поскольку вы используете PHP, быстрый поиск в Google показал этот проект - http://code.google.com/p/phpwebsocket/, который мог бы предоставить простой способ сделать это. Я не знаю, имеет ли он отказ от других технологий, если браузер не поддерживает веб-порты, но если это не так, вы можете разместить socket.io-client поверх него и просто использовать проект phpwebsocket для обеспечения уровня вашего сервера ,

+0

Прохладное представление о сокетах! Я даже не знал, что они существуют в Javascript. Тем не менее, я думаю, что ajax_request.onprogress - это все, что мне нужно для моих целей. – Chris

Смежные вопросы