1.简介
Pushlet 是一个开源的 Comet 框架,Pushlet 使用了观察者模式:客户端发送请求,订阅感兴趣的事件;服务器端为每个客户端分配一个会话 ID 作为标记,事件源会把新产生的事件以多播的方式发送到订阅者的事件队列里。表面上是服务器推,实现是还是客户端拉。
2.实现
2.1.发布Event
2.1.1.Local本地
--Dispatcher API
Dispatcher.getInstance().multicast()/unicast()/broadcast().
package com.siyuan.study.pushlet.event; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import nl.justobjects.pushlet.core.Dispatcher; import nl.justobjects.pushlet.core.Event; public class SendEventServlet extends HttpServlet { private static final long serialVersionUID = 1341951769479495126L; @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { this.doPost(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { Event event = Event.createDataEvent("/myEvent/test"); event.setField("mess", "it is " + System.currentTimeMillis()); Dispatcher.getInstance().broadcast(event); Dispatcher.getInstance().multicast(event); Dispatcher.getInstance().unicast(event, req.getParameter("sessionId")); } }
--EventSource
2.1.2.Remote远程
2.2.获取Event
--DHTML
--AJAX
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Pragma" content="no-cache" /> <script type="text/javascript" src="ajax-pushlet-client.js"></script> <script type="text/javascript"> PL._init(); PL.joinListen('/cuige/he'); function onData(event) { alert(event.get("mess")); // 离开 // PL.leave(); } </script> </head> <body> <center> <h1> my first pushlet! </h1> </center> </body> </html>
--XML
--J2ME
3.其余配置
web.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <!-- $Id: web.xml,v 1.7 2005/02/21 17:21:49 justb Exp $ --> <web-app> <!-- Define the pushlet servlet --> <servlet> <servlet-name>pushlet</servlet-name> <servlet-class>nl.justobjects.pushlet.servlet.Pushlet</servlet-class> <load-on-startup>3</load-on-startup> </servlet> <servlet> <servlet-name>sender</servlet-name> <servlet-class>com.siyuan.study.pushlet.event.SendEventServlet</servlet-class> </servlet> <!-- Define the Servlet Mappings. --> <!-- The pushlet --> <servlet-mapping> <servlet-name>pushlet</servlet-name> <url-pattern>/pushlet.srv</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>sender</servlet-name> <url-pattern>/send</url-pattern> </servlet-mapping> </web-app>
pushlet.properties
4.设计思路
客户端订阅事件时在SessionManager中注册一个Session,并且保存订阅信息Subscriber。Subscriber包含两个重要的属性,subscriptions主题,EventQueue用于存储Event,客户端请求Pushlet从EventQueue中获取Event。
5.参考资料
http://www.pushlets.com/
相关推荐
服务器推送技术在现代Web...总之,Pushlet作为Comet的一种实现,提供了高效且灵活的服务器推送功能,尤其适合需要实时数据交互的Web应用。通过对Pushlet框架的深入理解和实践,开发者可以构建出更具互动性的Web服务。
总的来说,Pushlet提供了一种简单的方式来实现在Web应用中从后台向前端推送消息,这对于实时聊天、股票更新、在线游戏等场景非常有用。通过理解Pushlet的工作原理和实践操作,开发者可以有效地提升Web应用的交互体验...
- 完成上述步骤后,部署 Web 工程并启动服务器,然后在客户端(可能是浏览器或 Applet)加载 Pushlet 客户端代码,即可开始接收服务器推送的消息。 通过 Pushlet,开发者可以构建高效、实时的交互式应用,减少了...
标题中的“通过推送机制(Tomcat comet,pushlet)实现进度条”涉及到的是Web应用中的一种实时通信技术,主要用于提供动态更新和用户交互。这里主要介绍Tomcat的Comet和Pushlet技术,以及如何利用它们来创建一个...
PUSHLET是一种基于Java技术实现的即时通讯系统,它允许服务器主动向客户端推送数据,而无需客户端持续轮询请求。这种技术在实时性要求高的应用中非常常见,如在线聊天、股票交易、游戏等场景。本实例将展示如何在...
- **WebSocket**:现代Web应用中的标准推送技术,提供全双工、低延迟的通信通道,适合实时聊天应用。 2. **架构设计**: - **客户端-服务器架构**:聊天工具通常采用这种架构,客户端负责用户交互,服务器处理...
"Pushlet"是一种基于Java的实时数据推送技术,主要用于构建能够实时更新的Web应用程序。它是由Jive Software公司开发的,允许服务器主动向客户端发送数据,而不仅仅是响应客户端的请求,这种模式被称为“推送”...
2. **实时推送**:Pushlet负责后台的数据推送,一旦有新的聊天消息,服务器会立即通过已建立的长连接将消息推送给相关的客户端。 3. **多用户互动**:通过ExtJS的数据管理,可以轻松处理多个用户之间的交互,如添加...
2. **创建Java后台服务**:编写服务端代码,处理业务逻辑,并准备要推送的数据。 3. **创建反向AJAX通道**:在JavaScript中创建反向AJAX通道,注册事件监听器。 4. **客户端订阅**:在客户端JavaScript代码中订阅...