`
dreamoftch
  • 浏览: 492791 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

tomcat comet 推送 技术 入门

阅读更多

 

参考资料:

 

http://tomcat.apache.org/tomcat-6.0-doc/aio.html

 

首先引入tomcat的lib目录下的jar包:

 

catalina.jar,servlet-api.jar

 

另外要修改tomcat的server.xml,将protocal="http/1.1"什么的修改为:

 

<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" 
               connectionTimeout="20000" 
               redirectPort="8443" />

 

 

这样就让tomcat支持推送功能了

 

(注意:最后关闭连接的时候,要用CometEvent的close()方法)

 

然后写servlet,实现comet特定接口,实现event方法:

下面的例子作用是当一个请求没有携带name参数的时候,将该请求的HttpServletResponse存放到list中,等待后面某个请求携带了name参数的时候,通过推送的方式通知所有人该消息,当然,如果时间超时,则返回error,页面再次发生请求即可。个人感觉不错的入门例子

 

public class MyCometServlet extends HttpServlet implements CometProcessor {

        List<HttpServletResponse> responses = new ArrayList<HttpServletResponse>();
	public void event(CometEvent event) throws IOException, ServletException {
		HttpServletRequest request = event.getHttpServletRequest();
		HttpServletResponse response = event.getHttpServletResponse();
		
                //请求开始
		if (event.getEventType() == CometEvent.EventType.BEGIN) {
			//设置超时时间,单位ms
			event.setTimeout(3000);
			responses.add(response);
			// 昵称
			String name = request.getParameter("name");
			System.out.println(name);
			if (name == null) {
				return;
			}
			
			Writer writer = null;
			for(HttpServletResponse r:responses){
				r.setCharacterEncoding("utf-8");
				writer = r.getWriter();
				writer.write("欢迎:"+name);
				System.out.println("-----");
				writer.flush();
				event.close();
			}
		} else if (event.getEventType() == CometEvent.EventType.ERROR) {
                       //请求超时
			response.setCharacterEncoding("utf-8");
			response.getWriter().write("error");
			response.getWriter().flush();
			response.getWriter().close();
                        event.close();
		} else if (event.getEventType() == CometEvent.EventType.END) {
                        //请求结束
			response.setCharacterEncoding("utf-8");
			response.getWriter().write("end");
			response.getWriter().flush();
			response.getWriter().close();
                        event.close();
		} else if (event.getEventType() == CometEvent.EventType.READ) {
                        //读取请求数据
			response.setCharacterEncoding("utf-8");
			response.getWriter().write("read");
			response.getWriter().flush();
			response.getWriter().close();
                        event.close();
		}
	}


}

 

当然该servlet要在web.xml中配置,我的映射路径为:/cometServlet

 

其中页面可以通过js发送请求,也可以通过直接在地址栏输入url,都可以

例如jquery异步请求:

 

$.post("cometServlet",function(data){
   alert(data);
});

 

 

可以携带参数:

 

var param={"name":"dreamoftch"};
$.post("cometServlet",param,function(data){
    alert(data);
});

 

 

或者直接地址栏输入:

http://localhost:8080/comet_helloWorld/cometServlet?name=dreamoftch

(携带参数的话,直接就有相应,没有参数则会等待)

 

比较明显的例子是多个页面发多个请求,前面的几个请求不携带name参数,最后一个携带name参数,就会使前面的所有的请求都接收到响应,当然超时的话会进到error里面。

 

好了,晚上的收获就这些了,睡觉

 

分享到:
评论

相关推荐

    Tomcat comet 服务器推技术

    Tomcat 的 Comet 技术是一种基于 HTTP 长连接的服务器推送技术,允许服务器在客户端保持一个开放的 HTTP 连接,从而能够在数据准备好时立即推送到客户端,而无需客户端发起新的请求。这种技术在实时性要求高的场景,...

    tomcat实现推送技术

    在Tomcat中实现推送,一般会利用两种主要技术:Comet技术和WebSocket。Comet是一种使服务器端数据持久化连接到客户端的技术,可以实现长轮询或流式推送。WebSocket则是一种在浏览器和服务器之间建立持久连接的协议,...

    comet demo 向客户端推送例子

    总的来说,这个"comet demo"是一个学习和理解Comet技术的绝佳实践,可以帮助开发者掌握如何在Java Web环境中实现服务器向客户端的实时数据推送。通过深入研究和运行这个示例,你可以更好地了解HTTP长连接的工作原理...

    基于Comet推送技术的实时图形控件

    本篇文章将详细探讨基于Comet推送技术实现的asp.net实时图形控件及其特点。 首先,我们需要理解Comet技术。Comet是一种Web通信模式,它打破了传统的HTTP请求-响应模型,允许服务器向客户端主动推送数据,而不是等待...

    comet4j-tomcat7后台信息推送jar包

    在这个场景中,"comet4j-tomcat7后台信息推送jar包"是一个专门为Tomcat7服务器设计的实现Comet技术的组件。 Tomcat7是Apache软件基金会的Apache Tomcat服务器的一个版本,它是一个开源的、实现了Java Servlet和Java...

    tomcat实现comet例子 comet tomcat 随机数

    tomcat实现comet例子,实现后台产生每隔几秒产生随机数,前台不刷新显示。tomcat实现comet例子,实现后台产生每隔几秒产生随机数,前台不刷新显示。tomcat实现comet例子,实现后台产生每隔几秒产生随机数,前台不...

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

    标题中的“通过推送机制(Tomcat comet,pushlet)实现进度条”涉及到的是Web应用中的一种实时通信技术,主要用于提供动态更新和用户交互。这里主要介绍Tomcat的Comet和Pushlet技术,以及如何利用它们来创建一个...

    web推送 comet技术

    总结来说,"web推送 Comet技术"利用了Comet4J框架和Tomcat7服务器,实现在Web应用中的实时数据推送。它挑战了传统的HTTP交互方式,提升了用户体验,但同时也带来了额外的系统管理和优化挑战。在开发过程中,理解...

    服务器推送技术之comet4j资源包

    Comet4j就是一种基于Java实现的服务器推送技术框架,旨在简化实时Web应用的开发过程。本资源包包含了实现Comet4j功能所需的关键组件,包括`comet4j.js`脚本文件和`comet4j-tomcat7.jar`服务器端库。 首先,让我们...

    配置tomcat支持comet

    但有些应用,如实时聊天、股票更新、在线游戏等,需要服务器能够主动推送数据到客户端,这时就需要用到Comet技术。Tomcat作为广泛使用的Java Servlet容器,可以通过特定配置来支持Comet。 **1. Comet技术简介** ...

    Comet服务器推送技术

    Comet服务器推送技术是一种在Web应用中实现服务器主动向客户端推送数据的技术,它解决了传统HTTP协议下只能由客户端发起请求的局限。随着Ajax技术的普及,开发者希望在浏览器环境中实现更接近桌面应用的实时交互,而...

    comet4j 自己写的消息推送 觉得实用

    【标题】"comet4j 自己写的消息推送 觉得实用" 提示我们讨论的是一个自定义实现的基于 Comet4j 的消息推送系统。Comet4j 是一个开源的 Java 框架,用于实现实时的、双向的、基于 HTTP 长连接的消息推送服务,它解决...

    Tomcat 开发Comet实例

    本文将深入探讨如何在Tomcat中开发一个Comet实例,这是一项用于实现服务器向客户端推送数据的技术,对于实时交互应用如聊天、股票更新或天气预报等场景非常关键。 Comet是一种持久连接技术,它打破了传统的HTTP请求...

    ssm.rar_comet_java comet_java comet推送_聊天 JAVA SSM

    在这个"ssm.rar_comet_java"压缩包中,我们聚焦于Comet技术在Java环境下的应用,特别是用于实现服务器推送功能,如聊天应用。 Comet是一种Web实时通信技术,它通过持久化HTTP连接使得服务器可以主动向客户端推送...

    comet4j-tomcat6,comet4j-tomcat7,comet4j.js,以及一个样例

    在传统的HTTP协议中,客户端和服务器之间的通信是基于请求-响应模型的,而Comet技术打破了这种模式,允许服务器向客户端推送数据,而无需客户端不断地发送新请求。这在实时应用,如聊天室、股票报价、在线游戏等场景...

    comet4j-tomcat7.jar和comen4j.js

    虽然Comet4J-tomcat7.jar不支持Tomcat8及以上版本,但可以考虑使用其他服务器推送技术,如WebSocket,它已被现代浏览器广泛支持,并且有更丰富的库和工具。 通过理解这些关键概念和步骤,你可以有效地在Tomcat7...

    comet4j+tomcat6+tomcat7并附完整版Demo

    Comet技术是用于实现实时Web应用的一种方法,它允许服务器主动向客户端推送数据,而不仅仅是响应客户端的请求。 【Comet4j】是Comet技术的一个Java实现框架,旨在简化Java开发者在应用中集成Comet技术的难度。Comet...

    Comet4J服务器端推送技术

    Comet4J是一个微型的即时推送框架,它分为服务端与客户端两部分,你只要将服务器端(JAR文件,目前仅支持Tomcat6、7)放入WEB-INF\lib,客户端(JavaScript文件)引入到页面,那么你的应用就具备了向客户端推送信息的...

    comet4j-tomcat6.jar和comet4j-tomcat7.jar和comet4j.js

    Comet4j是一个Java库,专门用于在Tomcat应用服务器上实现Comet技术,这是一种用于创建持久性HTTP连接的方法,从而实现服务器向客户端推送数据的功能。这种技术在实时Web应用程序中非常有用,例如在线聊天、股票报价...

    comet4j-tomcat6.jar、comet4j-tomcat7.jar、comet4j.js

    Comet技术是Web服务器与浏览器之间的一种持久连接方式,允许服务器在接收到新数据时主动推送到客户端,而不需要客户端频繁发起请求。Comet4J是这种技术的一个实现,它提供了一种高效、易用的解决方案,适用于需要...

Global site tag (gtag.js) - Google Analytics