Pushlet是一种comet实现:在Servlet机制下,数据从server端的Java对象直接推送(push)到(动态)HTML页面,而无需任何Java applet或者插件的帮助。
缺点:服务的类在服务器启动时开始一直运行,对服务器的压力很大。
准备工作:
1. 下载pushlet (pushlet-2.0.4.zip)
2. 创建工程 PushletTest
a) 项目名称为 : PushletTest
2. 添加依赖文件
a) 在下载文件的webapps 演示文件夹中找寻文件
b) 在 src 目录中添加 log4j.properties pushlet.properties sources.properties
c) 添加依赖jar包
在下载文件的 lib 目录下 copy pushlet.jar pushletclient.jar 导入到/WEB-INF/lib
d) 配置 web.xml
<servlet> <servlet-name>pushlet</servlet-name> <servlet-class>nl.justobjects.pushlet.servlet.Pushlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>pushlet</servlet-name> <url-pattern>/pushlet.srv</url-pattern> </servlet-mapping>
3. 添加实例
a) 创建数据源
package com.source; import java.io.Serializable; import nl.justobjects.pushlet.core.Event; import nl.justobjects.pushlet.core.EventPullSource; public class HelloWorldEventPullSource implements Serializable{ private static final long serialVersionUID = 1L; static public class HelloWorldEvent extends EventPullSource{ @Override protected long getSleepTime() { return 1000; //刷新时间 } @Override protected Event pullEvent() { Event event =Event.createDataEvent("/source/event");//事件标识 event.setField("msg", "hello,world");//封装参数 return event; } } }
b) 配置数据源
sources.properties 进行数据源配置<将sources.properties 中的source数据清空,添加下面的数据源>
source1=com.source.HelloWorldEventPullSource$HelloWorldEvent
c) 添加js文件
在WebContent目录下面新建一个js文件夹,并添加ajax-pushlet-client.js文件进去(文中说到的所有文件,都在pushlet-2.0.4.zip里面可以找见)
c) d)页面调用
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>index.html</title> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <script type="text/javascript" src="js/ajax-pushlet-client.js"></script> <!—js 从演示项目的 lib 下copy --> <script type="text/javascript"> PL._init(); PL.joinListen('/source/event'); //事件标识 在数据源中引用 function onData(event) { alert(event.get("msg")); } </script> </head> <body> </body> </html>
3
3.
3.文件目录结构如下:
4. 4 . 测试 http://localhost:8080/PushletTest/Index.html