您的位置:首页 > 编程语言 > Java开发

Spring mvc + pushlet实现向特写用户实时推送信息

2014-03-24 14:50 309 查看
环境:pushlet-2.0.4

所遇问题:

1.如何向特定用户推送

参考网上资料:http://tonl.iteye.com/blog/1398995

首先:修改ajax-pushlet-client.js,在PL对象后加入userId:

复制代码

其次:修改pushlet源码,nl.justobjects.pushlet.core.SessionManager,将createSession方法修改如下:

复制代码

这是我们就获得的session的id就是我们传送过来的登陆用户userId,getField的第二个参数是当得不到请求参数userId的值的时候设定的默认值。

最后:对修改过的源码进行编译打包

编择:直接到下载的pushlet包下build

打包:通过jar命令



2.如何在配置的推送源中获取service对象

参考:http://blog.csdn.net/zollty/article/details/8710911

因为pushlet是在服务端做的轮询,并不经web容器,所以不能自动注入,要手动获取,方法如下:

复制代码

注:IRenwuService
为消息接口,RenwuServiceImpl为接口实现类

3.Spring 初始化的bean名称是什么

看到2中getBean("renwuServiceImpl"),
Spring容器初始化bean时,所有bean名称都以小写字母开头(这里从控制台也可以看出所有初始化bean的名称),所以bean名为renwuServiceImpl

4.如果推信息为中文如何处理

如查推送的信息为中文,前端JS不会返回信息,但从控制台可以看出,推送源已执行,但会自动将sessionId移除,如下图:



解决方法:

new String("中文问题".getBytes("UTF-8"),"ISO-8859-1");

5.用Jquery实现无刷新框架要注的JS代码位置

这里我是用 Jquery post方法在页面初始化时进行动态加载main页面,所以

复制代码

要放入最后回载的main页,不能放入在他之前加载的页面

6.关于key的取值问题

复制代码

这里的key不能是数字(包括数字字符串),否则同样会出现4的问题

=============================华丽的分隔线=========================

完整配置代码:

步骤一: 创建一个类(事件推送源类)

复制代码

步骤二: 配置文件( sources.properties )

复制代码

将原有的source*全部注释或删除掉

步骤三: 配置文件( web.xml )

复制代码

步骤四: jsp文件中js写法

复制代码

注:${userId}为当前登录用户的ID
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐