昨天看了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实时系统开发中的应用
分享到:
相关推荐
在IT行业中,HTTP长连接(也称为Comet技术)是一种用于实现服务器向客户端实时推送数据的方法,常用于构建实时交互的应用,如聊天室、股票报价、在线游戏等。C#作为.NET框架的主要编程语言,提供了丰富的工具和技术...
综上所述,Comet技术通过HTTP长连接实现了服务器向客户端的实时数据推送,显著改善了Web应用的交互体验。PHP和JavaScript结合,可以轻松构建出这样的实时应用实例。然而,Comet也存在一定的缺点,如服务器资源消耗较...
Comet 技术主要分为两种实现方式:HTTP 长轮询(Long Polling)和 HTTP 流(HTTP Streaming)。长轮询是客户端发起请求,服务器在没有新数据时保持连接不关闭,直到有新数据或达到预设超时时间才返回响应并关闭连接...
Comet 是一种用于 Web 应用程序的异步通信技术,它通过 HTTP 长连接实现服务器向客户端推送数据,而不是传统的由客户端发起请求获取数据。这种技术解决了传统Web应用中实时性不足的问题,使得Web应用能够实现类似...
5. **性能优化**:在大规模应用中,需要考虑如何有效地管理大量并发的Comet连接,以确保服务器性能和资源的合理使用。 在实际开发中,开发者需要关注如何正确配置服务器,设置合适的超时时间,优化客户端的...
在这个示例中,Comet技术通过持续的HTTP连接实现了页面定时更新,服务器可以在连接保持期间随时向客户端推送新的时间信息,而无需客户端频繁发起请求。这种方式在实时性要求较高,但又不需要WebSocket全双工通信的...
页面间隔半秒钟更新时间***使用Comet开发http长连接示例分享,详细地介绍了如何使用Comet技术在***环境下,通过HTTP长连接实现页面定时更新的功能。 知识点一:Comet技术概述 Comet是一种Web应用模型,允许服务器端...
Comet技术是一种基于HTTP长连接的反向Ajax技术,它允许服务器向客户端浏览器主动推送数据,从而实现双向通信。在Web应用中,通常的HTTP请求是客户端发起的,而Comet打破了这种模式,使得服务器可以在适当的时候主动...
HTTP Streaming是Comet技术的一种实现方式,它通过保持一个持久的HTTP连接来实现实时数据传输。在HTTP Streaming中,服务器发送数据到客户端,并且不关闭连接,直到所有的数据都发送完毕或特定的事件发生。这种方式...
尽管Comet可以通过HTTP长连接实现类似的功能,但WebSockets提供了更低的延迟和更高的效率,适用于需要频繁交互的实时应用。 在压缩包文件`CometTest`中,可能包含了一个简单的Comet实现示例,你可以通过学习和运行...
Comet4j利用HTTP长连接来实现双向通信,即服务器和客户端都可以发起数据传输。在传统的HTTP请求/响应模型中,服务器只能在接收到客户端请求后返回数据。而Comet4j通过保持一个打开的HTTP连接,使得服务器可以在有新...
Comet4j是一个基于Java开发的实时通信框架,主要用于实现服务器向客户端的长连接推送服务。在Web应用中,传统的HTTP协议是请求-响应模式,不利于实现即时消息推送。而Comet4j通过 comet 技术,使得服务器能够主动向...
Comet技术通常有几种实现方式,包括长轮询(Long Polling)、iframe、流(Streaming)和HTTP/2 Server Push等。长轮询是最早的Comet实现,它延长了HTTP请求的生命周期,直到服务器有新消息才返回响应;iframe则是在...
1. **长轮询(Long Polling)**:Comet4j可能实现了长轮询技术,这是最早的Comet实现方式之一。当客户端发送请求后,服务器并不立即响应,而是保持连接打开状态,直到有新的数据可发送,或者超时才返回,从而实现数据...
1. Comet技术:Comet是Web服务器与浏览器之间的一种通信模式,通过长时间保持HTTP连接来实现服务器到客户端的数据推送。这种技术可以避免频繁的HTTP请求/响应导致的延迟和网络资源浪费。 2. 长轮询(Long Polling)...
Comet技术主要利用了HTTP的持久连接特性,主要有两种实现方式:HTTP长轮询和HTTP流。HTTP长轮询是客户端发起一个请求,服务器端保持连接不关闭,直到有新的消息或者超时才会返回,客户端接收到数据后立即再次发起...
Comet4j是一种Java库,专门用于实现 comet 技术,即服务器向客户端推送实时数据的一种方式。在Web开发中,Comet技术常用于构建实时交互的应用,如在线聊天、股票更新、即时通知等。本项目"基于Comet4j的简易聊天...
HTTP流和长轮询是早期的Comet技术,它们通过长时间保持HTTP连接来实现服务器到客户端的推送。WebSocket是HTML5引入的一种新协议,它提供全双工通信,允许服务器和客户端双向发送数据,但并非所有浏览器都支持。 ...
- 在这个"Comet的demo"中,可能使用了上述的一种或多种技术来实现长连接和数据推送。具体实现方式可以通过分析代码和运行示例来了解。 5. **文件分析**: - "Comet"这个压缩包中的文件可能是服务器端代码(例如用...
Comet4j是一个专门用于JavaWeb应用的长连接通讯框架,它简化了基于Comet技术的实时通信实现。 首先,我们要理解Comet技术。Comet是一种让服务器端能够长时间保持HTTP连接打开的技术,使得服务器可以在适当的时候向...