`

pushlet例子-hello worl

 
阅读更多

pushlet是comet的一个实现框架,在Servlet机制下,数据从server端的java对象直接推送(push)到html页面,无需插件的支持。至于comet和ajax的区别什么的,大家上网看一下即可,这里不做太多说明。

首先去下载pushlet,下载地址:http://www.pushlets.com/,我下载的是一个当下最新的版本2.0.4。下面以一个例子做下说明,详细的可以看一下pushlet自身带的例子,源码也不是很复杂,包括几个js文件。有空大家看看源码可能更好些。

首先建立一个web工程projPushlet,将pushlet.jar放到lib目录中,引入到工程。并且将pushlet.properties和sources.properties两个文件拷贝到WEB-INF目录中去。工程的目录结构如图示



 
我们一般只需要对sources.properties进行修改即可。创建的消息源必须在这个文件中进行配置。消息源需要实现EventSource接口

先看一下web.xml文件的servlet配置

1   <?xml version="1.0" encoding="UTF-8"?> 

2   <web-app version="2.5"  

3       xmlns="http://java.sun.com/xml/ns/javaee"  

4       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  

5       xsi:schemaLocation="http://java.sun.com/xml/ns/javaee  

6       http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"

7     <servlet

8           <servlet-name>pushlet</servlet-name

9           <servlet-class>nl.justobjects.pushlet.servlet.Pushlet</servlet-class

10          <load-on-startup>1</load-on-startup

11      </servlet

12   

13      <!-- Define the Servlet Mappings. --> 

14   

15      <!-- The pushlet --> 

16      <servlet-mapping

17          <servlet-name>pushlet</servlet-name

18          <url-pattern>/pushlet.srv</url-pattern

19      </servlet-mapping>  

20  </web-app

 注意,缺省不需要修改<url-pattern>/pushlet.srv</url-pattern>,如果修改,需要在对应的js文件中也要修改。pushlt缺省就是通过pushlet.srv触发servlet的。

==========================================

 

看一下index.jsp这个文件的内容

1    <%@ pagecontentType="text/html;charset=UTF-8" language="java" %> 

2    <html

3    <head

4        <script type="text/javascript" src="ajax-pushlet-client.js"></script

5        <script type="text/javascript"

6            PL._init(); 

7            PL.joinListen('/zhaoyang/hi'); 

8            function onData(event) { 

9                alert(event.get("hw")); 

10           } 

11       </script

12   </head

13    

14   <body

15   <h1>my first pushlet</h1

16   </body

17   </html

其中,第6行,是对pushlet的初始化,触发web.xml中的servlet。其中,第七行特别重要,这里的监听的主题,必须在sources.properties中配置的对象中声明这个主题。sources.properties配置着事件源(EventSources),在服务器启动时会自动激活。可以通过服务器的启动记录查看的到。可以将这个文件放到WEB-INF目录下面或者classess目录下面都可以。(详细可以看sources.properties内的注释)

然后看一下sources.properties这个文件内容。如下图示:


 ‍
注意,source1是系统缺省自带的,source2是我自己配置的,并且在index.jsp中的脚本中,配置的/zhaoyang/hi是和这儿是对应的。具体是这样的。HwPlushlet是com.css.HelloWorldPlushlet对象的一个内部类,并且继承EventPullSource接口。大家看一下HelloWorldPlushlet.java就全明白了。代码如下:

 

1   package com.css; 
2     

3   import nl.justobjects.pushlet.core.Event;
4    import nl.justobjects.pushlet.core.EventPullSource; 
5     
6    import java.io.Serializable; 
7     
8    /** 
9     *Created by IntelliJ IDEA. 
10    * User:liuzhy 
11    * Date: 2011-1-18
12    * Time:10:54:35 
13    */
14   publicclass HelloWorldPlushlet implements Serializable{ 
15   
    static public class HwPlushlet extends EventPullSource { 
16   
 
17   
        @Override 
18           protected long getSleepTime() { 
19               return 1000;   
20           } 
21    
22           @Override 
23           protected Event pullEvent() { 
24               Event event =Event.createDataEvent("/zhaoyang/hi"); 
25               event.setField("hw","hello,world"); 
26               return event;  
27           } 
28       } 
29   
30   

在上面的代码中,可以看到创建事件(createDataEvent)的主题(aSubject)是/zhaoyang/hi,和index.jsp中PL.joinListen('/zhaoyang/hi'); 是对应的。EventPullSource有两个方法,一个是设置休眠时间(getSleepTime),另一个是创建事件(pullEvent)。其中,业务部分就写在pullEvent()方法中即可,这个方法会被定时调用

这样这个基本的例子就OK了,运行一下,看看吧。

 

 访问http://localhost:8080/ 会定时弹出alert窗口,窗口的内容就是 event.setField("hw","hello,world");,呵呵。如图:



 ‍

如果这个页面关闭了,服务器会自动取消订阅,和移除对应的session信息。下面是我关闭页面后,服务器端的输出信息,如图:



 ‍
-----------------------------------------------

这里,因为我没有对pushlet的原理进行说明,主要是写了一个例子,如果要了解原理,可以上网Google一下,原理方面的资料很多,但是实际的例子确很少,呵呵。

来自:http://hi.baidu.com/hivemind/item/a0a08bd2cb7df9b832db9064

  • 大小: 30.5 KB
  • 大小: 76.3 KB
  • 大小: 76.7 KB
  • 大小: 140.3 KB
分享到:
评论

相关推荐

    Pushlet的Ajax-pushlet-client.js分析

    《Pushlet的Ajax-pushlet-client.js深度解析》 在当今的Web开发中,实时通信技术已经成为了一项不可或缺的技能,而Pushlet的Ajax-pushlet-client.js则是实现服务器“推”技术的重要工具。本文将深入剖析这个...

    pushlet2.0.4-demo-增加指定人推送

    为了更好地理解和使用 Pushlet 2.0.4 的指定用户推送功能,你可以参考提供的"pushlet-2.0.4实例增加指定用户推送"压缩包文件。这个实例包含了源代码、配置文件和相关文档,可以帮助你快速搭建一个简单的示例应用,...

    pushlet-sessionid.jar ajax-pushlet-client.js pushlet.properties

    pushlet 所需夹包 和配置文件 ajax-pushlet-client.js pushlet-sessionid.jar sources.properties pushlet.properties

    pushlet-UserUnicast

    "Pushlet-UserUnicast" 是一个专门针对特定用户进行推送技术演示的项目,它为初学者提供了深入了解和学习推送技术的良好平台。Pushlet是一种基于Java的实时数据推送框架,它允许服务器主动向客户端发送数据,而不是...

    pushlet-2.0.4

    Pushlet 是一个开源的 Comet 框架,Pushlet 使用了观察者模式:客户端发送请求,订阅感兴趣的事件;服务器端为每个客户端分配一个会话 ID 作为标记,事件源会把新产生的事件以多播的方式发送到订阅者的事件队列里。

    pushlet例子

    pushlet例子,Pushlet 是一个开源的 Comet 框架,Pushlet 使用了观察者模式:客户端发送请求,订阅感兴趣的事件;服务器端为每个客户端分配一个会话 ID 作为标记,事件源会把新产生的事件以多播的方式发送到订阅者的...

    java服务端推送实例-pushlet-及中文问题

    在本实例中,我们将使用Pushlet-2.0.4.jar这个开源包。Pushlet库提供了ServerPush和ClientPull两种模式,ServerPush模式由服务器主动向客户端推送数据,而ClientPull模式则由客户端定时请求服务器获取数据。由于我们...

    pushlet-2.0.4.rar

    《Pushlet 2.0.4:JAVA开源框架与J2ME、JAVA WEB技术解析》 Pushlet 2.0.4是一款基于JAVA的开源框架,专为实现推送技术(Push Technology)而设计,适用于J2ME和JAVA WEB环境。在当前互联网应用中,实时数据传输的...

    pushlet 例子

    具体到"pushlet 例子",这个压缩包很可能包含了一个运行在Eclipse开发环境中的Pushlet示例项目。你可以通过导入这个项目,直接在Eclipse中运行和调试,以理解Pushlet的工作原理和使用方法。 标签中的"comet"是指...

    pushlet-2.0.3.rar

    pushlet所需要用到的jar包、js和properties都打包在里面!

    Pushlet学习(二) -- Pushlet CookBook部分翻译 + 注释

    Pushlet是Java中的一种推技术,它允许服务器主动向客户端推送数据,而不仅仅是响应客户端的请求。在Web应用中,这种技术打破了传统的HTTP长轮询或短轮询机制,提供了实时性更好的通信方式。本篇内容主要围绕"Pushlet...

    pushlet实例以及jar

    标题中的“pushlet实例以及jar”表明我们即将讨论的是一个基于Pushlet技术的示例项目,其中包含了必要的jar文件。Pushlet是一种轻量级的、基于服务器推送(Server-Sent Events, SSE)技术,用于实现实时数据传输,...

    comet pushlet 例子

    在这个"comet pushlet 例子"中,我们主要关注以下几个关键知识点: 1. **HTTP长连接**:在HTTP协议中,通常每个请求都会打开一个新的连接,请求完成后关闭。HTTP长连接(Keep-Alive)则是指在一个TCP连接上可以连续...

    pushlet框架做的小例子

    通过这个小例子,你可以直观地了解Pushlet框架的工作流程,并学习如何在自己的项目中集成和使用Pushlet。 **总结** Pushlet框架为Java开发者提供了一种实现服务器到客户端实时数据推送的有效工具,通过克服HTTP的...

    pushlet.jar(2.0.4)

    Pushlet 是一个开源的 Comet 框架,Pushlet 使用了观察者模式:客户端发送请求,订阅感兴趣的事件;服务器端为每个客户端分配一个会话 ID 作为标记,事件源会把新产生的事件以多播的方式发送到订阅者的事件队列里。 ...

    pushlet服务器推技术例子

    【Pushlet服务器推技术】是一种实时通信技术,主要用于构建能够实时推送信息的Web应用程序,比如聊天、股票更新、在线游戏等场景。Pushlet是基于Java的开源项目,它利用了HTTP的长连接特性,实现了服务器主动向...

    服务器推送pushlet讲解

    这个名为"pushlet-record.txt"的文件可能包含了Pushlet框架的使用记录、日志信息或者是一些示例代码。分析这个文件可以帮助你更好地理解和使用Pushlet框架,例如,你可以找到服务器如何处理推送事件,客户端如何建立...

    pushlet使用说明(包括中文乱码)

    1. **下载 Pushlet**:首先,你需要从官方网站获取 Pushlet 的最新版本,例如文中提到的 pushlet-2.0.4 版本。 2. **创建 Web 项目**:在 IDE(如 MyEclipse)中创建一个新的 Web 项目,命名为 pushletproj。 3. *...

    pushlet

    开发者可以通过解压提供的pushlet-2.0.3压缩包,获取源代码、文档和示例,以便更好地理解和集成Pushlet到自己的项目中。 在使用Pushlet时,开发者需要注意以下几点: 1. **性能优化**:由于Pushlet依赖持久连接,...

Global site tag (gtag.js) - Google Analytics