通过实例了解彗星

use*_*729 5 implementation comet server-push

它的功能是所谓的"服务器推送",谷歌波似乎也在利用.

有人可以通过代码片段解释这个概念它在Web应用程序中的实际工作方式吗?

Igo*_*aka 2

一些伪 JavaScript:

<script>
//open connection to the server, updateFunc is called every time server sends stuff
//For example ticker price for Google (GOOG)
var connection = CometLibrary.subscribe("http://server", "GOOG", updateFunc);

//data is JSON-encoded
function upudateFunc(data) {
  var elem = $("#GOOG .last");
  if (elem.value < data.last)
    elem.css("color", "green");
  else (elem.value > data.last)
    elem.css("color", "red");
  elem.value = data.last;
}

</script>
<span id="GOOG">GOOG: <span class="last"></span></span>
Run Code Online (Sandbox Code Playgroud)

因此,上面的代码建立了与服务器的持久连接,并且每次服务器上有更新时都会调用回调函数。如果价格上涨或下跌,价格就会改变颜色;如果没有变化,价格将保持之前的颜色。

替代方法是使用一个间隔计时器每隔几秒发出一次 AJAX 请求,这会产生建立和断开连接的开销。