用pushlet框架做消息推送需要注意的几个内容
2014-12-05 17:55
274 查看
最近在用pushlet做推送信息,项目的要求是,需要能达到对某个人的推送。一开始在dwr和pushlet犹豫,后来组长说pushlet轻量级,比较好用,所以就就选择这个。但是在用的过程中出现挺多困难,困扰了很久。特意写出来与大家分享下,希望大伙能少走弯路。本文的内容,有些我是参考网上其他的,当然也有自己总结的。
首先去官网下载2.0.4这个版本,感觉比较多人用这个。按照给的demo,把ajax-client以及各种配置文件放好,这个网上资料一大把,不细说。
配好后,在用的时候
1、注意在前端页面需要配置<base href="<%=basePath%>">basePath这个一定要,要不然会出现错误。特地强调下,pushlet出现错误的时候,很少有错误提示,或者错误不对,只能靠自己断点摸索了。网上说的需要修改ajax-pushlet-client这个文件,我倒是没有。
2、如果要是对指定对象的推送,要我们手动传入一个userid来替换sessionid。
首先需要修改nl.justobjects.pushlet.core.SessionManager文件
public Session createSession(Event anEvent) throws PushletException {
// Trivial
//return Session.create(createSessionId());
return Session.create(anEvent.getField("userid", "visitor"));
//return Session.create(createSessionId(), anEvent);
}
这个修改后,重新编译jar包替换原来的jar包。
然后在 ajax-pushlet-client.js ,在此代码后面加上
// Construct base URL for GET
var url = PL.pushletURL + '?p_event=' + anEvent;
if (anEvent == 'join' || anEvent == 'join-listen') {
url = url + '&userid=' + userid;
}
修改这两处后,在你调用pl.init()监听后,要主动传入userid的值。这个就是你指定推送用户的 的id。关于这方面,网上很多内容,不细说。
3、关于中文,这点重点强调下,pushlet 的setfield(key,value) ,value不能是中文。如果是中文,根本无法传值,前端获取不到,在xml就报空了。当时我这个调试了一天,后来发现的。网上有的也有说,不过很少。如果非要传值,可以加个编码,如URLEncoder.encode,然后在js再decode,也可以。
4、关于key的,不能是纯数字,如果纯数字也是会跟value的错,想我也调试了好几天。
其实这个我所说的,很多网上能看到,只是都是分散的。我个人只是把我遇到的困难都列出来,重点提下,关于源码,很抱歉在公司无法提供,只能把自己还有记忆的写下而已。希望对大家有用
首先去官网下载2.0.4这个版本,感觉比较多人用这个。按照给的demo,把ajax-client以及各种配置文件放好,这个网上资料一大把,不细说。
配好后,在用的时候
1、注意在前端页面需要配置<base href="<%=basePath%>">basePath这个一定要,要不然会出现错误。特地强调下,pushlet出现错误的时候,很少有错误提示,或者错误不对,只能靠自己断点摸索了。网上说的需要修改ajax-pushlet-client这个文件,我倒是没有。
2、如果要是对指定对象的推送,要我们手动传入一个userid来替换sessionid。
首先需要修改nl.justobjects.pushlet.core.SessionManager文件
public Session createSession(Event anEvent) throws PushletException {
// Trivial
//return Session.create(createSessionId());
return Session.create(anEvent.getField("userid", "visitor"));
//return Session.create(createSessionId(), anEvent);
}
这个修改后,重新编译jar包替换原来的jar包。
然后在 ajax-pushlet-client.js ,在此代码后面加上
// Construct base URL for GET
var url = PL.pushletURL + '?p_event=' + anEvent;
if (anEvent == 'join' || anEvent == 'join-listen') {
url = url + '&userid=' + userid;
}
修改这两处后,在你调用pl.init()监听后,要主动传入userid的值。这个就是你指定推送用户的 的id。关于这方面,网上很多内容,不细说。
3、关于中文,这点重点强调下,pushlet 的setfield(key,value) ,value不能是中文。如果是中文,根本无法传值,前端获取不到,在xml就报空了。当时我这个调试了一天,后来发现的。网上有的也有说,不过很少。如果非要传值,可以加个编码,如URLEncoder.encode,然后在js再decode,也可以。
4、关于key的,不能是纯数字,如果纯数字也是会跟value的错,想我也调试了好几天。
其实这个我所说的,很多网上能看到,只是都是分散的。我个人只是把我遇到的困难都列出来,重点提下,关于源码,很抱歉在公司无法提供,只能把自己还有记忆的写下而已。希望对大家有用
相关文章推荐
- 开源框架Pushlet入门,使用Pushlet将消息从服务器端推送到客户端
- 关于开源框架Pushlet中的定点推送消息和与浏览器参数交互详解
- 关于开源框架Pushlet中的定点推送消息和与浏览器参数交互详解
- 基于netty3.x框架的消息处理,需要注意线程池结构的设计
- 使用消息队列需要注意的几个关键问题
- 在Android开发过程中搭建一个自己的应用框架有几个步骤?需要注意什么?
- 编写框架需要注意的地方
- 开发COM+组件需要注意的几个地方
- JBoss RMI 远程调用需要注意的几个问题!
- 旅游黄山需要注意的几个问题
- 使用crontab需要注意的几个问题
- 声明引用的时候需要注意的几个问题
- 用例模型设计需要注意的几个问题
- 产品类研发项目需要注意的几个问题
- 使用模板模板缓冲时需要注意的几个问题
- 编写windows 控件需要注意的几个标签属性(Attribute)
- 使用proguard需要注意的几个地方
- JBoss RMI 远程调用需要注意的几个问题!
- ACCESS转化成SQL2000需要注意的几个问题
- Java Web 框架需要解决的几个问题