5

它的功能就是所谓的“服务器推送”,google wave 似乎也利用了这一点。

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

4

1 回答 1

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>

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

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

于 2010-01-19T11:20:37.660 回答