服务器推送技术之pushlet
来源:互联网 发布:淘宝服务器架构设计 编辑:程序博客网 时间:2024/05/29 10:53
对pushlet开源的改造
1、拓展了一个userid属性,开启了整个架构的前后台参数传递的机制,同时修改了默认的pushlet sessionId标识,采用了servlet服务端sessionId,达到了和服务端的统 一。
2、对后台进行了URLEncoder.encode(message.getMsg(),"UTF-8")编码,前台对应decodeURIComponent(event.get("msg")解码,解决了推送中文无响应的bug
重点知识介绍
<script type="text/javascript" src="<%=path%>/javascript/ajax-pushlet-client.js"></script>
<script type="text/javascript">
PL.webRoot=sy.contextPath+"/";
PL.userId="${sessionId}";
PL._init();
PL.joinListen('/MessageFactory/getMsg');//建立链接通道
function onData(event) {
$.messager.alert("温馨提示",decodeURIComponent(event.get("msg")));
//PL.leave();// 断开链接
}
</script>
此段初始化代码如果遇到了前有母版页和iframe的框架,需要放置在最外层
public class MessageCenterPlushlet extends EventPullSource implements Serializable{
/*
* 设置休眠时间
* */
@Override
protected long getSleepTime() {
return 3000;
}
/*
* 推送的消息
*/
@Override
protected Event pullEvent() {
Event event = Event.createDataEvent("/MessageFactory/getMsg");
try {
event.setField("msg", URLEncoder.encode("您的帐号已在异地登录,您被迫下线,请注意密码保护!","UTF-8"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return event;
}
}
继承EventPullSource,并重写getSleepTime和pullEvent 即可实现静态的消息推送
这个需要配置
#source7=com.spark.common.MessageCenterPlushlet
(不太方便)
/*
* 将消息推送到指定的用户
* */
public boolean RunPull(MessageModel message,String userId){
boolean success=false;
Event event = Event.createDataEvent("/MessageFactory/getMsg");//创建消息通道
try {
event.setField("msg", URLEncoder.encode(message.getMsg(),"UTF-8"));
event.setField("showType", message.getShowType());
event.setField("isExecuteText",String.valueOf(message.isExecuteText()));
event.setField("shouldGologin", String.valueOf(message.isShouldGologin()));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
//推送给全部用户
if(userId==null||userId.equals("")){
Dispatcher.getInstance().multicast(event); // 向所有和myevent1名称匹配的事件推送
}else{//推送给指定的用户
Dispatcher.getInstance().unicast(event,userId);// 向ID为piero的用户推送
}
return success;
}
由服务器主动推送
Dispatcher提供broadcast、multicast、unicast来进行消息的广播、多播和单播
配置web.xml
<!-- pushlet配置 -->
<servlet>
<servlet-name>pushlet</servlet-name>
<servlet-class>nl.justobjects.pushlet.servlet.Pushlet</servlet-class>
<load-on-startup>3</load-on-startup>
</servlet>
<!-- Define the Servlet Mappings. -->
<!-- The pushlet -->
<servlet-mapping>
<servlet-name>pushlet</servlet-name>
<url-pattern>/pushlet.srv</url-pattern>
</servlet-mapping>
- 服务器推送技术之pushlet
- Comet HTTP服务器推送框架之Pushlet
- pushlet实现服务器推送
- web服务器推技术之pushlet
- Pushlet之消息通知- 实现服务器端推送技术
- Pushlet之消息通知- 实现服务器端推送技术
- Pushlet服务器推送(资料)
- pushlet 服务器主动推送数据到客户端
- pushlet 服务器数据推送到客户端
- 服务器推技术comet的pushlet实现
- 服务器推技术comet的pushlet实现
- 服务器推技术comet的pushlet实现
- Pushlet - 开源 Comet 框架 - 实现服务器端推送技术
- java web服务器推送数据到客户端(pushlet)
- pushlet定时推送
- pushlet主动推送
- Pushlet实现消息推送
- pushlet服务端推送
- MonkenRunner之HierarchyViewer API教程
- Struts 2 Hello World Example
- 《黑马程序员》 初识黑马
- 常用存储过程
- 常用的js工具库
- 服务器推送技术之pushlet
- apache 的常用:1反射赋值方法 2数组追加字符、填充fill、集合转化为数组
- LeetCode_best-time-to-buy-and-sell-stock-ii
- java链接mysql
- LSTM实现详解
- Python 字典 排序
- Linux鸟哥私房菜学习笔记--第九章
- Windows service中的Timer控件
- Linux 下安装ffmpeg(xlib264 yams)