pushlet_2.0.3_源码分析_服务器端__
Pushlet 2.0.3 是一个开源的服务器推技术实现,主要针对Java平台。它允许服务器主动将数据推送给客户端,支持浏览器和桌面应用程序。本文将深入分析Pushlet 2.0.3的服务器端源码,了解其架构、工作原理及关键实现。 **总体架构** Pushlet 的架构主要包括服务器端和客户端两部分。服务器端基于Servlet技术,负责监听客户端请求,并通过不同的adapter响应客户端。客户端分为浏览器和桌面应用程序,它们通过HTTP连接与服务器交互。整个系统的核心组件包括Pushlet、Session、Controller、Subscriber、Dispatcher和clientAdapter。 1. **Pushlet** - 接收所有用户请求,将请求封装成event对象,然后创建command对象交给Controller处理。 2. **Session** - 代表用户的一次会话,不同于HTTP session,它使用URL重写的方式来跟踪会话,会话在指定存活期内有效。 3. **Controller** - 执行所有命令,包括控制命令和数据推送命令。数据推送的实际执行由Subscriber完成。 4. **Subscriber** - 核心类之一,维护一个阻塞的事件队列,根据客户端的不同模式(如stream或pull/poll)来发送响应事件。 5. **Dispatcher** - 另一核心类,负责事件的分发,支持多播、广播和单播。事件源可以是客户端或eventSource。 6. **clientAdapter** - 包括browserAdapter、XMLAdapter、serializedAdapter,分别用于向不同类型的客户端发送javascript、xml或序列化数据。 **工作原理** Pushlet 实现了两种服务器推模式:stream(HTTP长连接)和pull/poll(客户端定时刷新)。对于浏览器客户端,它利用DHTML和JavaScript回调函数实现实时更新,而桌面应用则更容易实现此效果。系统通过控制通道和数据通道确保可靠性和健壮性,控制通道保持非阻塞,实时接收命令,数据通道在stream模式下保持连接,直到收到断开命令或异常。pull/poll模式下,连接在有数据时断开。心跳机制用于在阻塞超时后向客户端发送消息,保持会话活跃。 **协议服务** Pushlet 提供以下协议服务: 1. **join** - 开始会话 2. **leave** - 结束会话 3. **subscribe** - 订阅主题 4. **unsubscribe** - 取消订阅 5. **listen** - 打开数据通道,选择stream、pull或poll模式 6. **join-listen** - 同时启动会话并开始监听 7. **publish** - 发布数据 8. **heartbeat** - 表示会话仍然活跃 **具体实现** Pushlet 的实现大量使用了单例、工厂模式、适配器模式和命令模式,强调面向接口和抽象类编程,便于理解和扩展。系统属性主要在配置文件中定义,通过扩展点可以方便地替换默认实现。请求处理的入口始于pushlet的Init方法。 在源码分析中,我们可以看到Pushlet如何处理请求,如何创建并执行命令,以及如何通过Adapter将响应数据发送给客户端。每个组件的职责明确,协同工作以实现服务器推功能。 Pushlet 2.0.3 是一个强大的服务器推解决方案,其设计考虑了灵活性和可扩展性,能够适应多种客户端场景,提供高效的数据推送服务。通过深入源码,我们可以更好地理解其内部工作机制,以便在实际项目中灵活运用或进行二次开发。


























剩余8页未读,继续阅读

- #完美解决问题
- #运行顺畅
- #内容详尽
- #全网独家
- #注释完整

- 粉丝: 22
- 资源: 4
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- MATLAB实现声发射熵值计算:参数可调的高效M文件程序
- 基于国产MCU的全开源无感FOC风机控制代码解析及其应用
- mdir模型,多模态dir干预
- 基于FPGA的微波炉控制器设计:实现高效灵活的家电控制
- 超声波焊接技术在汽车门板塑焊机中的应用:从源码到硬件加工的全面解析
- 二阶系统中LADRC与NLADRC的Simulink建模及扰动条件下与PID对比分析
- 交通牌识别:基于Matlab的BP神经网络与模板匹配技术实现
- C#实现PLC转Web API服务器框架:集成IoT与高并发特性的工业物联网解决方案
- 基于Vivado的AD9680 FPGA芯片测试程序:Verilog实现1G采样率Lane4 JESD204B接收
- 工控领域OPC转Modbus TCP软件解决方案及其应用
- 基于C#开发的带读码检查功能的标签打印系统及其应用场景
- 三菱Q系列PLC 11轴运动控制项目解析:涵盖PLC程序、触摸屏设计及电气规划
- 信号处理领域中基于EEMD与样本熵的序列信号分解与重构技术
- 基于STM32的物联网智能家居系统:环境监测与智能调控
- MATLAB/Simulink电动助力转向系统(EPS)建模及控制策略实现
- 西门子PLC与托利多称重仪表在新能源物料输送中的RS485通讯及模拟量控制实现


