在介绍comet的基本理论之后,pushlet是comet的一种实现,它主要利用Servlet容器(Tomcat和Jetty)在Servlet没有运行完毕(线程一直没有运行完毕),server不会主动关闭连接,这给web的进行长连接由server push data 到client端提供了基本的理论依据。
注:本文在修改之前说的Com是利用keep-alive功能,server不会主动关闭连接,这个说法经过笔者实践有点错误。我们知道在Tomcat线程模型图如下(BIO的方式):
阻塞式的IO的线程模型是,一个请求会用一个线程维护一个socket,以阻塞的方式读取数据。当socketServer accept客户端的请求后,会生成一个新的socket,同时从线程池中拿出一个线程attach到这个socket上。当Servlet的线程未完毕时,socket即使在keep-alive关闭的情况下,Tomcat也不会关闭socket,显然这种方式对Comet而言,不是很好的方式,因为一个线程维护一个socket,本身就是开销比较大。Pushlet同样是利用Servlet的工作线程,对于一个user维护一个这样的线程,pushlet的性能在高并发的情况下,线程开销较大,性能肯定是不好的,因此,有必要看看Tomcat里面对于Comet的支持了。
Pushlet作为一种comet理论的实现,其工作原理也比较简单,笔者花了两天时间看了它的源码,总结了它的工作原理如下图:
1.browser发送join命令到server,server产生唯一的ID给client端,用于标识这次会话的唯一性,Pushlet是用java.rmi.server.UID产生的唯一的标志会话的标志,此时server会把sessionID作为key,session对象作为value,存放到HashMap里面,然后通过response.getWriter().println()回调给browser
注意:server接收client的请求是通过一个统一的servlet入口,pushlet.java来接收,下同。
2.browser拿到sessionID,并发送listen命令,listen命令,有subject,提交给server,server首先验证Session HashMap里面有没有这个sessionID,验证通过后,回调给客户端listen_ack消息,同时开始从eventQueue取出数据,并update给客户端,这里的queue符合生产消费模式,eventsource是生产线程,它负责把数据enqueue入队列,如果满则等待,直到消费线程消费,消费线程负责消费,由于eventsource是sleep一段时间才enqueue,消费线程没有sleep,它采取的是while(alive)的方式,因此,从这里来说,消费速度应该快于生产速度的。
- 大小: 116.6 KB
- 大小: 73.9 KB
分享到:
相关推荐
二、Pushlet 工作原理 1. 客户端连接:客户端通过建立一个持久的HTTP连接到Pushlet服务器,这个连接保持打开状态,直到客户端或服务器端关闭。 2. 注册订阅:客户端向服务器发送订阅请求,指定感兴趣的事件或数据。...
本篇文章将对Pushlet的基本概念、工作原理以及简单应用进行深入探讨。 1. Pushlet概述: Pushlet是Java Push技术的一种实现,由Marc Fleury领导的Jboss团队开发。它的核心思想是利用HTTP长连接,使服务器能够在一个...
Pushlet的工作原理是基于HTTP长连接,通过保持客户端和服务器之间的持久连接,服务器可以在数据准备好时立即推送到客户端,而无需等待客户端的下一次请求。这种机制在网络应用中特别适用于股票报价、实时聊天、在线...
首先,要理解Pushlet的工作原理。当客户端(例如,一个Web浏览器)与Pushlet Server建立连接后,服务器会保持这个连接打开,直到客户端断开或者服务器端有新的消息需要发送。一旦有新消息,Pushlet Server会立即通过...
源码可以帮助开发者理解内部工作原理,以便进行定制和扩展。文档通常会详述如何配置和使用Pushlet,包括设置服务器端、客户端集成以及错误排查等内容。示例工程则提供了一个快速入门的起点,通过实际运行和调试,...
首先,我们要理解Pushlet的基本工作原理。Pushlet使用了HTTP长连接(Persistent HTTP Connections)和 Comet 模型。Comet模型是一种处理服务器向浏览器推送数据的技术,它通过保持一个开放的HTTP连接直到有新的数据...
开发者可以通过阅读源码了解其工作原理,参考示例快速入门,通过配置文件定制Pushlet Server的行为。 总的来说,Comet框架的Pushlet实现是一种高效的服务器推送技术,它通过持久化连接解决了传统Web应用实时性不强...
**Pushlet框架的工作原理** Pushlet框架利用了HTTP的长连接特性,即Keep-Alive。在HTTP协议中,Keep-Alive允许在单个TCP连接上进行多个HTTP事务处理,从而避免了每次请求都建立新的连接。Pushlet通过建立一个持久化...
2. **研究源码**:查看提供的Pushlet实例代码,了解其工作原理和关键实现。这可能包括服务器端的Pushlet服务、客户端的订阅逻辑等。 3. **理解API**:深入研究jar文件中的API文档,了解如何初始化Pushlet客户端和...
首先,我们需要了解PUSHLET的基本工作原理。传统的HTTP协议是基于请求-响应模型的,即客户端发起请求,服务器返回响应。但在PUSHLET中,服务器可以在客户端打开一个持久连接后,通过这个连接主动发送数据,实现"推...
在实际使用时,开发者需要理解Pushlet的工作原理,配置pushlet.properties文件,并在客户端应用中引入ajax-pushlet-client.js来与服务器建立连接并接收推送数据。同时,参考给出的博客文章可以帮助理解修改的具体...
Pushlet 是一个基于 Comet 技术的框架,用于实现在 Web 应用中服务器向客户端实时推送数据的功能。Comet 是一种反向 AJAX 技术,...通过正确配置和理解其工作原理,你可以有效地利用 Pushlet 构建实时互动的 Web 应用。
首先,我们需要理解Pushlet的基本工作原理。Pushlet的核心思想是利用HTTP连接的持久化特性,即在客户端与服务器之间保持一个开放的HTTP连接,直到有新的数据需要推送或者连接超时。当服务器端有新的消息时,可以直接...
NV_P_FORMAT和NV_P_MODE定义了数据格式和Pushlet的工作模式。前者默认为'p_format=xml-strict',表明数据以严格的XML格式传输,后者默认为'p_mode=pull',表示Pushlet采用的是拉取模式。pushletURL、webRoot和...
它的工作原理是客户端与服务器建立持久连接,服务器端一旦有新数据,就会通过这个连接推送给客户端。 2. **HTTP长连接**:在HTTP 1.1版本中,持久连接(Keep-Alive)被引入,允许一个TCP连接在多次请求/响应之间...
Pushlet 的工作原理通常基于长轮询(Long Polling)、 comet 技术或者WebSocket等,这些技术克服了HTTP协议的无状态性和请求-响应模型的限制,实现了服务器到客户端的数据实时推送。在sessionid采用userid后,服务端...
Pushlet是一种基于Java的推送技术框架,用于实现实时数据从服务器向客户端的推送。Pushlet项目是由Peter Mularien开发的,它提供了一...然而,对于理解实时通信的基本原理和历史,Pushlet仍然是一个有价值的参考项目。
在本Demo中,我们将深入探讨Pushlet的工作原理和如何实现一个基本的网页推送系统。 首先,我们需要理解什么是Comet技术。Comet是一种用于实现实时Web应用的技术策略,通过长时间打开HTTP连接(长轮询、HTTP流或HTTP...
本文将深入分析Pushlet 2.0.3的服务器端源码,了解其架构、工作原理及关键实现。 **总体架构** Pushlet 的架构主要包括服务器端和客户端两部分。服务器端基于Servlet技术,负责监听客户端请求,并通过不同的adapter...
2. **Pushlet白皮书**:这是一份关于Pushlet的详细介绍文档,可能涵盖了其设计原则、工作原理、使用方法以及优点等内容。白皮书分为英文版和中文版,方便不同语言背景的读者理解。 3. **源码分析**:"pushlet 2.0.3...