昨天看了comet的介绍后,虽然大概知道了comet的原理,不过没实际用过还是不太清楚,于是今天又在网上翻了一下别的网友共享的comet实现http长连接的例子,在
Comet Server Push 技术介绍 一文中分别提到了 ”基于长轮询(long polling)“、”基于iframe“、”基于流(stream)“三种实现comet的方式,下面我将网上找到的对应的例子链接做个汇总,就当目录吧,留作以后看
基于长轮询(long polling)的特点
1. 服务器端会阻塞请求直到有数据传递或超时才返回。
2. 客户端响应处理函数会在处理完服务器返回的信息后,再次发出请求,重新建立连接。
3. 当客户端处理接收的数据、重新建立连接时,服务器端可能有新的数据到达;这些信息会被服务器端保存直到客户端重新建立连接,客户端会一次把当前服务器端所有的信息取回。
基于长轮询的实现方式的例子可以参见这篇文章
Ajax轮询以及Comet模式—写在Servlet 3.0发布之前
不过个人感觉作者在写服务器端的示例代码时没有体现出 "服务器端会阻塞请求直到有数据传递或超时才返回",正确的做法应该是一个servlet接收聊天信息,一个servlet响应轮询请求,采用观察者模式,被观察者的状态变化是查看聊天信息是否有更改,观察者会保存每个浏览器的轮询请求的response对象,当被观察者接收到新的聊天信息时,会通知观察者,观察者则会将当前最新的聊天内容返回给浏览器。也就是说只有当接收聊天信息的servlet接收到新的聊天内容时,被观察者才会通知所有的观察者,否则观察者将会一直保持response对象,没有返回,这样对浏览器来说就是一种阻塞。有时间自己再写一个例子验证一下...
基于iframe
通过在 HTML 页面里嵌入一个隐蔵帧,然后将这个隐蔵帧的 SRC 属性设为对一个长连接的请求,服务器端就能源源不断地往客户端输入数据。这种方式的难点在于如何判断连接中断并重新尝试连接
基于iframe实现的例子可以参见这篇文章
利用Response.Flush和iframe实现”服务器推”技术
基于流(stream)
后台服务器需要支持comet的web服务器,JAVA的话可以采用Jetty+tomcat 6.0以上的组合; 浏览器端依赖于Streaming AJAX 技术,目前Mozilla Firefox 提供了对这种技术的支持, 即当xmlhttprequest的返回值readystate 为 3 时(数据仍在传输中),客户端可以读取数据,从而无须关闭连接,就能读取处理服务器端返回的信息。IE 在 readystate 为 3 时,不能读取服务器返回的数据,目前 IE 不支持基于 Streaming AJAX。
基于流(stream)实现的例子可以参见这篇文章
浅析Comet技术在Java Web实时系统开发中的应用
分享到:
相关推荐
Java 实现 Comet 长连接,服务器主动发送消息给客户端
【ASP.NET编程知识】页面间隔半秒钟更新时间 Asp.net使用Comet开发http长连接示例分享.docx
基于php的服务器推送实例,演示在个客户端之间传递数据!
C# 实现 Http 长连接(Comet) 的 完整事例(WinForm事例)。
Comet:基于 HTTP 长连接的“服务器推”技术
comet技术所需要的jar包、js库,包含comet4j-tomcat6.jar、 comet4j-tomcat7.jar、comet4j.js、以及相关例子
Comet(Reverse AJAX)主要是通过HTTP长连接, 保持和服务器的连接,实现Server PUSH 和双向通信,下面通过示例学习他的使用方法
通过comet实现了一个聊天功能。 1.需要在tomcat的server.xml里面配置 <Connector port="8081" protocol="org.apache.coyote.http11.Http11NioProtocol" connectionTimeout="20000" redirectPort="8443" /> 2.需要...
NULL 博文链接:https://happysoul.iteye.com/blog/1313069
C#实现基于http长连接“服务器推”-Comet技术 很多应用譬如监控、即时通信、即时报价系统都需要将后台发生的变化实时传送到客户端而无须客户端不停地刷新、发送请求。 本项目基于 AJAX 的长轮询方式实现。 ...
NULL 博文链接:https://justcoding.iteye.com/blog/1497445
Comet:基于_HTTP_长连接的“服务器推”技术 Comet:基于_HTTP_长连接的“服务器推”技术 Comet:基于_HTTP_长连接的“服务器推”技术 简介
基于长连接的简易聊天室jQuery+.net 2.0 Comet Comet练手,尚有不少bug,还未实现维护用户列表功能 是长连接的不是轮询方式 升级版本 http://download.csdn.net/source/2216847
comet两种实现之一的ajax实现,内部有源代码,这是一个聊天室的例子
Comet实现聊天室 运行时请将Tomcat的server.xml文件内的 <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> 改为 ...
http长连接详解,http长连接应用之comet
AspNet Comet 长连接AspNet Comet 长连接AspNet Comet 长连接