1、基础概念:Pushlet是一种comet实现:在Servlet机制下,数据从server端的Java对象直接推送(push)到(动态)HTML页面,而无需任何Java applet或者插件的帮助。
2、什么事comet请参照
http://www.ibm.com/developerworks/cn/web/wa-lo-comet/
3、不多说了直接贴一个最简单的例子,
1)将pushlet.jar包导入自己的项目;
2)将pushlet.properties、sources.properties导入到src目录下
3)修改web.xml文件如下(url-pattern暂时设置为/pushlet.srv)
<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>
4)编写一个java类如下
import java.io.UnsupportedEncodingException;
import nl.justobjects.pushlet.core.Event;
import nl.justobjects.pushlet.core.EventPullSource;
public class HelloWorldPlushlet 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");// 事件标识
String s = "你好";
s = toISO88591(s);
event.setField("msg", s);// 封装参数
return null;
}
}
public static String toISO88591(String str) {
try {
str = new String(str.getBytes("UTF-8"), "ISO-8859-1");
} catch (UnsupportedEncodingException ex) {
ex.printStackTrace();
}
return str;
}
}
上面有一个中文的处理方法,toISO88591()不然不支持中文。
还有就是注意Event event = Event.createDataEvent("/source/event");// 事件标识
5)编写jsp文件如下<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!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>
<script type="text/javascript">
PL._init();
PL.joinListen('/source/event');//事件标识 在数据源中引用
function onData(event) {
alert(event.get("msg"));
}
</script>
</head>
<body>
test
</body>
</html>
PL.joinListen('/source/event');//事件标识 在数据源中引用,注意跟上面的红色部分保持一致。
6)下面说一下web.xml中<url-pattern>的配置问题,查看ajax-pushlet-client.js源码会发现有下面这段代码_getWebRoot: function() {
/** Return directory of this relative to document URL. */
if (PL.webRoot != null) {
return PL.webRoot;
}
//derive the baseDir value by looking for the script tag that loaded this file
var head = document.getElementsByTagName('head')[0];
var nodes = head.childNodes;
for (var i = 0; i < nodes.length; ++i) {
var src = nodes.item(i).src;
if (src) {
var index = src.indexOf("lib/ajax-pushlet-client.js");
if (index >= 0) {
PL.webRoot = src.substring(0, index);
break;
}
}
}
return PL.webRoot;
},
注意var index = src.indexOf("lib/ajax-pushlet-client.js");这句话 这个方法就是取webRoot跟路径的,所以<url-pattern>的设置跟这里有关系,还有就是跟你使用ajax-pushlet-client.js的jsp页面有关系,我上面的jsp页面中src="js/ajax-pushlet-client.js"是这样导入js包的,所以我把ajax-pushlet-client.js中的代码改为var index = src.indexOf("js/ajax-pushlet-client.js");取根路径了,大家可以测试一下就明白了。
7)最后启动程序,大家就可以看到每一秒弹出一个“你好”窗口了。
分享到:
相关推荐
服务器推 pushlet 服务器推 pushlet 服务器推 pushlet 服务器推 pushlet
pushlet开发与应用
pushlet白皮书pushlet白皮书pushlet白皮书pushlet白皮书pushlet白皮书
模拟用户聊天功能,不过时固定的用户,嘿嘿,但是完全的表现出了即时的消息发送
pushlet配置应用实例,看了之后就能简单应用pushlet实时推送数据
pushlet例子,Pushlet 是一个开源的 Comet 框架,Pushlet 使用了观察者模式:客户端发送请求,订阅感兴趣的事件;服务器端为每个客户端分配一个会话 ID 作为标记,事件源会把新产生的事件以多播的方式发送到订阅者的...
NULL 博文链接:https://cuisuqiang.iteye.com/blog/1416771
容易上手的简单pushlet例子,供大家学习,代码不错,值得下载。
Pushlet简单示例测试
基于Pushlet推技术的网络应用程序开发的研究,介绍了pushlet推送技术。
使用服务器端推送数据,实现客户端数据的刷新,减少服务器压力,资源......
个人制作整理的pushlet白皮书中文参考文档。 目录: 1.介绍(Introduction) 3 2.动机(Motivation) 4 3.通知解决(Notification Solutions) 5 3.1轮询(Polling) 6 3.2服务器端回调(Server-side callbacks) 6 3.3 ...
pushlet 所需夹包 和配置文件 ajax-pushlet-client.js pushlet-sessionid.jar sources.properties pushlet.properties
这些技术往往由于复杂而产生诸多不利之处:技术难以实现、存在防火墙限制(因为需要打开非HTTP的通讯端口)、需要额外的server开发和维护。并且除了刷新整个页面或者完全采用applet展示内容之外,很难找到别的方法将...
Pushlet的Ajax-pushlet-client.js分析 服务器推技术前台js分析 希望能帮到大家
pushlet文档和项目
基于长连接的HTTP服务器推送技术 介绍长连接机制和实现方法
实现通过pushlet,进行点对点聊天功能。 包括: 在线用户上线的通知 离线的通知 来新消息时的通知 前台使用Ext ,后台使用pushlet /pushlet/WebRoot/index.jsp 页面主要包含几个部分。 Ext.PUSHLET_URL='...
对comet实现中的pushlet框架进行说明,可以参照该说明进行框架使用