通过推送机制(Tomcat comet,pushlet)实现进度条

为提高用户体验,我们在处理一些长时间的任务中总希望提供进度条来显示任务完成情况。一般采用两种方式完成:一、客户端定时访问服务端获得进度信息并显示。二、服务端定时向客户端推送进度信息,客户端显示收到的进度。
这二种方式分别具有一下优缺点:

1.客户端定时访问:
  • 缺点:效率比较低,频繁的访问服务端消耗服务端资源。在权限系统中可能造成权限不能过期问题(timeout)。
  • 优点:服务端处理比较简单。

2.服务端定时推送:
  • 缺点:服务端处理程序比较复杂,需要掌握一定的线程知识。可能还需要应用服务器支持。
  • 优点:效率较高。

第一种实现方式,网上有非常多的实现并且其固有的缺点所以没有实现。这里只实现了服务端推送方式,工程在附件中。

工程中实现了二种方法推送进度:
1.通过Tomcat comet 实现( http://tomcat.apache.org/tomcat-6.0-doc/aio.html)。
  • 缺点:只能绑定tomcat 6.0以上版本,需要对服务器进行配置,使用正确的协议(如:org.apache.coyote.http11.Http11NioProtocol等)。
  • 优点:客户端开发比较简单,不需要太多学习。

2.通过pushlet实现 http://www.pushlets.com
  • 缺点:需要学习了解pushlet的使用。
  • 优点:适合主流web服务器,一旦学会使用还是比较简单。


我认为如果功能简单又使用Tomcat 6.0以上服务器,可以采用Tomcat comet。如果应用比较复杂最好采用pushlet,可能为了适合应用你可能需要扩展它,好在pushlet不算复杂,一般看看资料和源代码就会明白其原理,也就不难对其进行扩展。因为推送机制主要在后台完成,所以后台代码比较复杂,如果你不太了解线程最好先学习一下。

具体实现参考附件中的工程。开发IDE是Eclipse。如有疑问可以邮件[email protected]共同探讨。

注意使用Tomcat comet 实现需要修改协议为protocol="org.apache.coyote.http11.Http11NioProtocol"。

通过推送机制(Tomcat comet,pushlet)实现进度条



你可能感兴趣的:(tomcat,Comet,Pushlet)