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/
相关推荐
pushlet 所需夹包 和配置文件 ajax-pushlet-client.js pushlet-sessionid.jar sources.properties pushlet.properties
Pushlet的Ajax-pushlet-client.js分析 服务器推技术前台js分析 希望能帮到大家
官方pushlet2.0.4消息推送框架 增加了指定人推送
1.java服务端推送实例程序,经过自己测试运行是OK的; 2.使用pushlet-2.0.4.jar开源包; 3.解决了中文不能推送的问题; 4.带项目说明文档.
本文件中有pushlet针对特定用户推送的demo,对于初学者有较好的具有较好的引导作用。是十分有价值的资料。
Pushlet 是一个开源的 Comet 框架,Pushlet 使用了观察者模式:客户端发送请求,订阅感兴趣的事件;服务器端为每个客户端分配一个会话 ID 作为标记,事件源会把新产生的事件以多播的方式发送到订阅者的事件队列里。
pushlet定时向前台推送消息,可以直接运行
Pushlet2.0.4 JAVA开源免费框架 和示例代码 ,基于J2ME JAVA WEB
pushlet所需要用到的jar包、js和properties都打包在里面!
实现多个客户端连接到web服务器,由服务端推送消息至客户端(或指定id的客户端),代码中没有用官网的jar文件,而是用的源码,做了一定的修改,实现了每个客户端都可以自定义id,然后服务端可以向指定id客户端推送消息...
Pushlet后台往jsp前台推送消息实例(工程打包,能够运行)
基于pushlet web 实时聊天系统 项目没有任何问题,使用pushlet源码实现服务器推技术 实时通信 导入myeclipse 即可运行!
pushlet系统消息推送demo,pushlet消息推送示例
简单的消息推送实例,解决了中文错误问题!
Pushlet是一种comet实现:在Servlet机制下,数据从server端的Java对象直接推送(push)到(动态)HTML页面,而无需任何Java applet或者插件的帮助。它使server端可以周期性地更新client的web页面,这与传统的request...
一个基于pushlet推送的小例子,直接tomcat下运行就行
资源简介pushlet可以用于消息及时提示.这个例子主要是一个pushlet的小小的实例。 jar包 非常实用,目前正在使用中,稳定
java web开发中服务器推送pushlet.jar解决中文乱码
自己学习所写,实例中注释较多且详细。实现定时周期性推送、按需求广角推送和点对点推送。包含重新Pushlet的js和java代码。
对comet实现中的pushlet框架进行说明,可以参照该说明进行框架使用