在项目开发中,由于需要在首页做一个简单的消息总数推送功能,所以从网上整理并开发出一个简单的基于长轮询的服务器推送功能。
在说明tomcat支持comet之前,大家先简单的了解一下web 服务器端推送消息的方式,有很多的一部分开发者从事web应用的开发,web应用是基于http协议进行b/s同行的,也就是基于请求/响应式的模式就行数据通信,客户端请求一次,服务器端响应一次,所以称之为无状态的,而现在要让服务器主动给客户端推送消息
1.基于长连接,也就是b/s建立长久连接
@基于流方式的,在连接建立成功之后,始终保持连接不断
@基于poll,长轮询的方式,客户端请求一次,服务器端响应后,客户端再次发起响应,服务端再次响应,一直不断持续
2.基于websocket
基于html5,还未了解,请大侠普及
下面配置tomcat,来支持poll方式:
1.编写我们业务servlet
class MsgPendServlet extends HttpServlet implements CometProcessor
重写event(),具体参数介绍,大家可以网上找详细资料
如果IDE中,无此接口,需将tomcat-->lib下的catalina.jar导入我们工程中
2.编写页面,关键代码,ajax,重复调用自己
function getmsgcount(){
var url = "${ctx}/ajaxAction.do?method=json&classes=chatService&common=getMsgCount";
$.getJSON(url, function(data){
getmsgcount();
});
}
到此可以发布我们的小东东了,如果在启动tomcat报错,jsper.......异常,修改conf/context.xml
<Context>
<Loader delegate="true" />
<WatchedResource>WEB-INF/web.xml</WatchedResource>
</pre><pre name="code" class="html">总:服务器端的推送,涉及到多线程的编程,大家可以参考相关资料,以上就是自己工作中的一点小总结,请指教。