



下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Comet 学习笔记(一) Tomcat 与 Comet - Shin - 博客园Comet 学习笔记(一) Tomcat 与 Comet近来由于毕业设计,一直在忙于 comet 技术的研究,有了一 些心得和想法,特来与大家分享。Comet 技术被称为下一代 Ajax 技术,主要通过实现 server push 来解决 ajax 需要定时频繁发送请求的问题。通过Comet技术,客户端所需要的response信息不再需要主 动的去索取,而是在服务器端以 event 的形式推至客户端。 Comet 技术常见的实现方式streaming 和 long pollinglong poll : HTTP的
2、连接保持,直到server端一个事件触发或 者到达timeout事件。client端在收到response消息后,一个 新的 HTTP 请求会立刻开放。通过这种方式, server 端可以 将数据在任何时候 push 到客户端。streaming:在streaming方式中,HTTP的连接是始终保持的, 即使客户端收到响应, HTTP 连接也不断开。Tomcat 与 Comet在 Tomcat 6 中,增加了对 Comet 的支持, 但是其自带 例子(/webapps/examples/jsp/chat)有很多问题,没有运行成 功,怀疑该例并不完整(我的版本 Tomcat 6.0.16),经过
3、学习和研究,发现了一些问题,希望能给仍然奋战在其中的朋 友一些帮助。前期准备:使用 tomcat 提供的 comet api 之前,需要 增加对 NIO 的支持,配置 nio 可是相当方便,要做的仅仅是 在 server.xml 里边修改 connector :<connector protocol=org.apache.coyote.http11.Http11NioProtocol port=8080 redirectport=8443 connectiontimeout=20000>Tomcat 6 提供了 CometProcessor 和 CometEvent 接口, 具体功
4、能和操作不再赘述,详情请见 /tomcat-6.0-doc/aio.html 。注意:实现 CometProcessor接口后不用在 servlet 中写 doGet,doPoset 方 法,所有事件在 BEGIN,READ,END,ERROR 中实现。简单的 Comet servlet 代码示例:Code1 import java.io.*;2 import javax.servlet.ServletException;3 import javax.servlet.http.*;4 import org.apache.catalina.Comet
5、Event;5 import org.apache.catalina.CometProcessor;6 import org.apache.catalina.CometEvent.EventType;8 public class cometServlet extends HttpServlet implements CometProcessor 910 public void event(CometEvent e) throwsIOException, ServletException 11if(e.getEventType() =EventType.BEGIN) 12/ fill in co
6、de handling here13HttpServletResponse response =e.getHttpServletResponse();14PrintWriter out =response.getWriter();15out.write(Hello world);16out.flush();17/System.out.println(message sent);1819if(e.getEventType() = EventType.READ)20/ fill in code handling here2122/ and continue handing other events
7、2324 在此源代码中, 仅完成向客户端发送 Hello World 字符串的功 能,关键点,out.flush()不可缺少,以往在写ajax程序的时候, 往往忽略写这句话,但这里如果不写,客户端无法收到响应 文字。由于 tomcat采用 streaming 的方式实现 comet,不知是 否不加这句话的时候,客户端不知道你的消息已经结束,而 始终处于一个等待的状态(如果您有更专业的解释,请指 教)。服务器端 javascript 相关代码:Code1 <script>2 function CometEx() 3 var request = new XMLHttpRequest()
8、;4 request.open(GET, http:/localhost:8080/cometEx/cometServlet, true);5 request.onreadystatechange = function() 6 if (request.readyState = 3 && request.status= 200) 7 alert(request.responseText);8 9 10 request.send(null);11 12 </script>服务器端代码类似与普通 Ajax 代码,其中,需要注意的是: request.readyState 值如果设置为 4,浏览器会处于长期
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 生物化学分子基础概念题库及解析
- 珠宝首饰行业设计大赛试题
- 药品进口代理协议
- 2025年经济师备考方法分享试题及答案
- 人员管理与绩效考核试题及答案
- 项目扩展及合作策略试题及答案
- 信阳市学法用法考试试题及答案
- 防钓鱼测试题及答案
- 急诊精神科的合作模式计划
- 购房贷款协议书
- 客货线铁路隧道锚杆施工作业指导书
- 石英矿石购销合同
- 艾滋病快速抗体检测标准操作规程
- 公路养护的高级工复习题
- 三人合伙经营协议书 doc 三人合伙经营协议书实用版(六篇)
- 葡萄酒品尝学第八章-2013
- JJF 1303-2011雾度计校准规范
- t轴重DZ2型转向架
- GB/T 17791-2017空调与制冷设备用铜及铜合金无缝管
- 换热器检修施工综合方案
- 铁路防洪培训课件
评论
0/150
提交评论