Ajax高级笔记 JavaScript高级程序设计笔记(4)

  ①长轮询:与短轮询相反,页面发送一个请求,服务器一直保持连接打开,直到有数据可发送时就向页面发送数据。接收完数据后浏览器关闭连接,随机又发送一个新请求,在页面打开期间如此循环...

  【短轮询是服务器立即发送数据,即使数据无效,长轮询是等待发送响应。】

  轮询的优点是,所有浏览器都支持。通过XHR对象和setTimeout()实现。

  ②HTTP流:它在网页的整个生命周期内只使用一个HTTP连接。浏览器发送一个请求,服务器保持连接打开,再周期性向浏览器发送数据.

PHP例子

<?php   $i = 0;   while (true) {     //输出一些数据,然后刷新输出缓存     echo "Number is $1";     flush();     //等几秒     sleep(10);     $++;   } ...

实现HTTP流的关键:所有服务器端语言都支持打印到输出缓存然后刷新的功能。(将输出缓存中的内容一次性全部发送给客户端)

使用XHR实现HTTP流的典型例子

var xhr = new XMLHttpRequest(), received = 0; xhr.open("get", url, true); xhr.onreadystatechange = function(){ var result; if (xhr.readyState == 3){ //get only the new data and adjust counter result = xhr.responseText.substring(received); received += result.length; //call the progress callback progress(result); } else if (xhr.readyState == 4){ finished(xhr.responseText); } }; xhr.send(null); return xhr; } var client = createStreamingClient("streaming.php", function(data){ alert("Received: " + data); }, function(data){ alert("Done!"); });

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wyfsxx.html