pushlet_向所有在线用户发送消息的单线程应用

第一步:

 

pushlet是"服务器推"技术的一个开源框架,利用它可以实现Http长连接这项需求.

 

1.下载pushlet最新版,pushlet下载地址为:

http://sourceforge.net/projects/pushlets/files/pushlets/2.0.4/pushlet-2.0.4.zip/download

 

2.将下载后的zip包解压缩,看到如下目录结构:

 

3.新建立web项目,将lib目录中的pushlet.jar文件添加到项目的lib目录中

 

4.将webapps\pushlet\WEB-INF\classes目录中的pushlet.properties和sources.properties文件添加到项目的src目录中

 

5.将webapps\pushlet\lib目录中的ajax-pushlet-client.js文件添加到项目的根路径中

 

6.添加完成后,目录结构如下图所示:

 

第二步:

 

1.修改web.xml文件,添加如下片段:

    <servlet>
        <servlet-name>pushlet</servlet-name>
        <servlet-class>nl.justobjects.pushlet.servlet.Pushlet</servlet-class>
        <load-on-startup>3</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>pushlet</servlet-name>
        <url-pattern>/pushlet.srv</url-pattern>
    </servlet-mapping>

 

2.定义推送源HelloWorldPushlet,代码如下片段:

package com;

import java.io.Serializable;
import nl.justobjects.pushlet.core.Event;
import nl.justobjects.pushlet.core.EventPullSource;

public class HelloWorldPushlet implements Serializable {
    public static class PullSource extends EventPullSource {
        @Override
        protected long getSleepTime() {
            return 5000;
        }

        @Override
        protected Event pullEvent() {
            Event event = Event.createDataEvent("helloworld");
            event.setField("msg", "Hello World!!!");
            return event;
        }
    }  
}

 

3.修改sources.properties文件,为下图所示:

 

4.新建jsp页面,添加js文件,注册事件,回调函数,如下图所示:

 

5.在浏览器中浏览http://localhost:8080/pushlet_pushall/,可以看到如下图所示的结果,表示成功(Firebug看到连续的请求):

Pushlet 是一个开源的 Comet 框架,Pushlet 使用了观察者模式:客户端发送请求,订阅感兴趣的事件;服务器端为每个客户端分配一个会话 ID 作为标记,事件源会把新产生的事件以多播的方式发送到订阅者的事件队列里。 server端向浏览器client发送通知这种通讯模式在J2EE应用中很常见,通常使 Pushlet服务器端Java类UML图 Pushlet服务器端Java类UML图 用采用RMI、CORBA或者自定义TCP/IP信息的applet来实现。这些技术往往由于复杂而产生诸多不利之处:技术难以实现、存在防火墙限制(因为需要打开非HTTP的通讯端口)、需要额外的server开发和维护。并且除了刷新整个页面或者完全采用applet展示内容之外,很难找到别的方法将client端applet的状态和浏览器的页面内容集成在一起。 Pushlet是一种comet实现:在Servlet机制下,数据从server端的Java对象直接送(push)到(动态)HTML页面,而无需任何Java applet或者插件的帮助。它使server端可以周期性地更新client的web页面,这与传统的request/response方式相悖。浏览器client为兼容JavaScript1.4版本以上的浏览器(如Internet Explorer、FireFox),并使用JavaScript/Dynamic HTML特性。而底层实现使用一个servlet通过Http连接到JavaScript所在的浏览器,并将数据送到后者。有关JavaScript版本的知识请参看Mozilla开发中心提供的《JavaScript核心参考》和Stephen Chapman编写的《What Version of Javascript》。 这种机制是轻量级的,它使用server端的servlet连接管理、线程工具、javax.servlet API,并通过标准Java特性中Object的wait()和notify()实现的生产者/消费者机制。原则上,Pushlet框架能够运行在任何支持servlet的server上、防火墙的后面。当在client中使用JavaScript/DHTML时,Pushlet提供了通过脚本快速建立应用、使用HTML/CSS特性集成和布局新内容的便利方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值