您的位置: 新闻频道 Java新闻
Daniel Rubio(TSS.COM的博客管理者)发布一篇文章介绍Comet,comet是一种server push技术,传统模式的 Web 系统以客户端发出请求、服务器端响应的方式工作。这种方式并不能满足很多现实应用的需求,很多应用都需要服务器能实时地将更新的信息传送到客户端,而无须客户端发出请求。Comet解决了这个问题,简单的说就是客户端发送一个请求,服务器接收它,并使用一个无限循环,将客户端需要的数据push到response中,并进行刷新,但是该response并不关闭,继续接收新的数据并刷新,直到客户端断开连接,该循环才结束退出。

Comet可以通过多种方式实现,比如iFrames,Flash,ActiveX,Applet等,可以基于 AJAX 的长轮询方式,也可以基于 iframe 及 htmlfile 的流方式,也可以使用客户端插件来实现。由于AJAX现在已经是Javascript+XML的广泛应用标准,通过AJAX实现Comet在未来应该大有前途。一些web服务器Resin,Jetty等已经开始支持Comet。

来自:
http://macrochen.javaeye.com/blog/28020
http://www.theserverside.com/news/thread.tss?thread_id=48472
http://www.ibm.com/developerworks/cn/web/wa-lo-comet/

评论 共 10 条 发表评论

jiangyubao 2008-02-22 17:57
我们公司最近也使用comet技术,Java这块由我负责的。我第一感觉就是一种很有趣的技术,编程模式跟以前的不一样,因为是直接推过去了,适合股票、足球比赛、监控等WEB实时信息显示系统。在服务器上发生了一个事件,立刻就把事件通知给浏览器,如果使用定时刷新,刷新周期调得太高会给服务器造成很大压力,调得很低会丢失掉某些事件。

至于长链接的问题,我们使用的是hightide服务器,这个服务器是Jetty实现的,内置了ActiveMQ,针对comet技术做了一些优化。Jetty本身就是Java NIO来实现的(JAVA NIO不使用一个线程对应一个请求的工作模式),所以长链接的性能问题也给解决了,hightide的链接地址:
http://www.webtide.com/

我们程序已经开发好了,正在集成测试。下阶段我们打算测试性能,如果实在不行,我想把它部署到glassfish服务器上,因为glassfish服务器也是NIO实现的,而且支持集群和负载均衡,具体如何搭建glassfish,是否能解决性能问题,我还在做实验。
pppppp 2008-02-22 17:14
适合于聊天室之类的应用
strongkill 2008-02-22 15:11
还是喜欢使用请求方式取数据。
9esuLuciano 2008-02-22 15:11
根本没有实用价值,哪个服务器受得了这么多个长链接?
qichunren 2008-02-22 11:35
服务器持续不断的主动地向客户端push数据,初听感觉非常新鲜,实质没有改变.
beckrabbit 2008-02-22 11:29
性能是问题
jichongchong 2008-02-22 11:28
转啊转啊,又转回来了
sys53 2008-02-22 08:45
我原来开发的oa系统中的聊天室就是用push技术。
zhangd83 2008-02-21 15:04
我研究过一阵pushlet技术,是真正的主动服务器技术,也挺好,不过也有缺点(如性能问题),有待改进。
wangxinpier 2008-02-21 12:49
比较感兴趣!

发表评论

您还没有登录,请登录后发表评论