pushlet 开发实践真理
一、搭建环境
1.首先你需要pushlet包。你可以从pushlet的官网上去下载
http://www.pushlets.com/
写这篇文章的时候,pushlet的最新版本是 2.0.4 released
2.在这个包中,用到两个最重要的东西就是
---lib/a.pushlet.jar --加入你的项目
---webapps/pushlet/lib/ajax-pushlet-client.js ---加入你需要使用pushlet的页面
在这里推荐是用ajax方式使用,因为一切将变得如此简单,so简单
3.集成进自己的项目
pushlet需要将自己的servlet装配一下,客户端才可以通过这个servlet组织注册
即:webClient -----> pushletServlet
在web.xml中加入这个servlet
<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>
和普通的servlet一样,很简单的配置,名字不要乱改,否则又需要去改一下ajax端的内容了。
4.配置文件
当然,一个框架里很多信息,咱们都想去自己动手配置一下,所以还得把配置文件加到你的项目src下
可以把目录webapps/pushlet/WEB-INF/classes下的
---pushlet.properties --配置参数,如果英文不是很好,可以对照金山词霸,看一下用途,普通默认就好,这里不赘述了
---sources.properties --事件源,只有你需要自定义事件源时用,一般不用
加入到src下
5.这样pushlet在系统启动时,当第一个请求过来时将初始化自己
6.做完这些,恭喜你,pushlet的基本功能,已经完全可以使用了。
这些功能将能满足你的大部分需求
二、Web前台如何使用
1.使用的第一步是将ajax-pushlet-client.js加入需要使用的页面,仅此而已
<script type="text/javascript" src="js/ajax-pushlet-client.js"></script>
2.订阅一个主题(如果不理解这句话,可以认为pushlet就是个电视台,订阅操作就是将自己接收信号的台转到喜欢的频道)
然后你需要一个接收到pushlet发过来信息的处理器,也就是需要在这个页面加入一个onData函数,
懂回调的人,应该很容易理解这一点.而这里我只做个简单的打印。
<script type="text/javascript">
PL.joinListen("huahuagongzi");//加入一个主题/huahuagongzi
function onData(event){
var msg = event.get("msg");
alert(msg);
}
</script>
三、后台如何使用
后台的使用就更是简单了,只需要创建一个某一个频道的事件,让后把它发出去就ok了
在你任何一段可执行的代码中加入
String msg = "我想发送的消息";
String intMsg = 1;
Event event = Event.createDataEvent("huahuagongzi"); //创建一个huahuagognzi频道事件
event.setField("msg", msg);//把msg打包进去
Dispatcher.getInstance().multicast(event);//直接发送
filed提供int,long,string三种格式,换句话说,你只能给前台发送的数据只能是这三种格式,
当然,我相信你能猜到如何去传输任何格式的数据。
有人会说:我把所有的东西都弄成strng,再在前台js解析。
对对,很对,非常聪明,就是这样,你只需要把数据做成string串就ok
但我还是建议你在构建的时候考虑一下json格式,没用过json的就当我没说。
当调用上一段代码时,如果你的前台出现了alert现象,那恭喜你成功了。
四、问题
Q1.我使用了定时推,怎么不成功 ---仅限懂的,不要问我如何使用定时推
A1.你的实现事件源应该是一个静态内部类
如:
public class XEventPull {
public static class XEventPullSource extends EventPullSource {
@Override
protected long getSleepTime() {
return 60 * 1000;//推的间隔
}
@Override
protected Event pullEvent() {
Event event = Event.createDataEvent("/huahuagongzi");
event.setField("msg", "花花公子");
return event;
}
}
}
sources.properties里配置
#source2 = XEventPull$XEventPullSource
就说这么多吧,不懂的留言或加
QQ群47178617,一起讨论 ^_^