【发布时间】:2011-01-06 18:22:42
【问题描述】:
它的功能就是所谓的“服务器推送”,google wave 似乎也利用了这一点。
有人可以通过代码 sn-p 解释这个概念在 Web 应用程序中的实际工作原理吗?
【问题讨论】:
标签: implementation comet server-push
它的功能就是所谓的“服务器推送”,google wave 似乎也利用了这一点。
有人可以通过代码 sn-p 解释这个概念在 Web 应用程序中的实际工作原理吗?
【问题讨论】:
标签: implementation comet server-push
一些伪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 是如何实现的?我在想,如果请求的连接还没有完成,客户端如何得到响应?