Web应用中的Comet技术
Web开发中,Comet通常是指在Client和Server端维持一个长连接
当有新消息到达时,Server端可以实时把消息push到Client端
实际上,要实现“服务器推送”,不一定非要用基于http的comet来做
还可以基于socket来实现,比如:flash、applet、html5等
可以参考IBM的“Comet:基于 HTTP 长连接的“服务器推”技术”
就Comet的实现来说,可以有两种方式:
1. Streaming流模式:这种方式,实际上才是真正的长连接,Client和Server端一直维持该连接
当Server端有数据时,立即把数据返回给Client,Client马上去解释处理该数据
然后该连接继续保持,等待后续的数据....
2. Long Polling长轮询模式:当Server端没有数据时,该连接一直保持着,当返回给Client端后,Server端就断掉该连接
同时,Client端再发起一个新的长连接,依次循环...
从具体的技术实现上,comet可以有以下方式:
1. Iframe,可适用于Streaming和Long Pooling这2种模式,返回的数据格式使用Chunked来进行传输,使用它最大的缺点是,浏览器上可能会有进度条或不停Loading,不过,总还是有解决办法 的,见这里
2. Ajax, 可以适用于任何浏览器的Long Pooling模式。对于Streaming模式,在Firefox和Safari下可以使用,参见这里
3. Jsonp, 只适用于Long Pooling模式,它的好处是可以跨域,但同样会有浏览器不断Loading的问题
[...] comet,是服务器和浏览器之间维持一个长时间的http连接,用于服务器消息的实时推送,见Web应用中的Comet技术,这种模式下,浏览器只会发送一次request请求,而server端会不断吐出消息给浏览器端,直到超时或者手工终止连接 [...]
[...] comet,是服务器和浏览器之间维持一个长时间的http连接,用于服务器消息的实时推送,见Web应用中的Comet技术,这种模式下,浏览器只会发送一次request请求,而server端会不断吐出消息给浏览器端,直到超时或者手工终止连接 [...]