通过示例了解Comet

5

它的特点是所谓的“服务器推送”,Google Wave 似乎也在利用这一特性。

有人能够通过代码片段解释一下这个概念在Web应用程序中是如何工作的吗?

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请求,这样会增加建立和断开连接的开销。


CometLibrary 是如何实现的?如果请求的连接还没有完成,客户端会如何获取响应呢? - user198729
玩一下这个:http://goldfishserver.com/ 如果你在另一个浏览器中输入一条消息,你可以看到Firefox中的内容被更新。你还会发现新的内容是通过同一连接传输的。连接每5秒钟重置一次是为了检测连接错误。 - Igor Zevaka
至于它是如何实现的,相信我,你不想知道。这涉及到很多棘手的黑客技术。 - Igor Zevaka
CometLibrary的实现方式与适当的服务器组件保持一致。有关详细信息,请参见https://dev59.com/HkvSa4cB1Zd3GeqPcSsh#2044628。 - Jerod Venema
就我而言,精确地说,彗星客户端/服务器交互是一种独特的协议。 - Igor Zevaka

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接