




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
使用Pushlet来实现服务器端向客户端推送信息1. 实现方式:有两种实现方式:1. 通过配置文件来实现定时的从服务器端向客户端推送信息2. 通过API主动向另外一端推送信息以下分别给予介绍。2. 特别注意在开始测试之前,有两点非常重要,需要实现讲明,否则程序将会无法正常运行:2.1. JSP页面上的设定JSP页面上必须添加以下代码以确保Pushlet能够正确的获得后台服务的地址:base href=2.2. Pushlet的JS文件的Bug修改需要修改被引用的JS文件ajax-pushlet-client.js的内容,找到PL.pushletURL = PL._getWebRoot() + pushlet.srv;将其修改为PL.pushletURL = pushlet.srv;修改的原因是Pushlet进行地址解析的方法在某些应用中会解析错误,导致请求的路径是nullpushlet.srv?,最终导致无法正确的请求到服务器的信息。2.3. 中文问题一般情况下,如果不做特殊处理,中文问题将会导致Pushlet的客户端停止响应,解决办法是,在使用Pushlet的客户端代码发送消息之前,将其进行转码,代码为encodeURIComponent( msg)3. 正式开始以上准备工作完毕,就可以正式的开发测试样例了。3.1. 定时的从后台向前台push信息(1) 在eclipse中创建一个动态的web工程(2) 配置及库文件文件:从/ 下载最新的pushlet的开发包,将其中的以下文件按照描述进行设定序号文件名源位置目标位置备注1.pushlet.jarpushlet-2.0.4lib项目类路径如果使用的是applet的话,还需要将pushletclient.jar设置到项目的类路径中去2.pertiespushlet-2.0.4webappspushletWEB-INFclasses项目的src根路径注意稍后需要修改perties,其他两个文件的内容不需要修改3.ajax-pushlet-client.jspushlet-2.0.4webappspushletlib项目的webrootlib需要按照之前的描述修改其中的内容(3) 修改web.xml,将pushlet的自启动servlet添加进去 pushlet nl.justobjects.pushlet.servlet.Pushlet 1 pushlet /pushlet.srv (4) 创建服务器端代码,特别注意类和内部静态类的名字/* * */package com.guoguo;import java.io.Serializable;import java.io.UnsupportedEncodingException;import sun.rmi.runtime.Log;import nl.justobjects.pushlet.core.Event;import nl.justobjects.pushlet.core.EventPullSource;/* * author QIAGUO * */public class HelloWorldPushlet implements Serializable /* * */private static final long serialVersionUID = -8940934044114406724L;public static class HWPushlet extends EventPullSource Log log = Log.getLog(HWPushlet.class.getName(),HWPushlet.class.getName(), true);/* * (non-Javadoc) * * see nl.justobjects.pushlet.core.EventPullSource#getSleepTime() */Overrideprotected long getSleepTime() return 1000;/每一秒钟自动执行一次/* * (non-Javadoc) * * see nl.justobjects.pushlet.core.EventPullSource#pullEvent() */Overrideprotected Event pullEvent() /注意,一下是设定消息的主题/guoguo/helloworld,号称主题是可以继承的 /但是笔者的测试是失败的,也许方法不对,呵呵Event event = Event.createDataEvent(/guoguo/helloworld);String data= hello,world 郭强 +System.currentTimeMillis();try data=new String(data.getBytes(UTF-8),ISO-8859-1); catch (UnsupportedEncodingException e) e.printStackTrace();event.setField(hw,data);return event;(5) 注册服务器端代码为事件源,在perties文件中,添加以下行source7=com.guoguo.HelloWorldPushlet$HWPushlet以上方式适用于有内部类的情况,如果没有内部类的话,使用以下的方式进行注册(这时外部类必须继承父类EventPullSource)source7=com.guoguo.HelloWorldPushlet(6) 页面(可以参考页面内注释信息)Pushlet Test base href= /初始化pushlet客户端PL._init(); /设定运行时显示调试信息,不需要时,直接删掉即可PL.setDebug(true); /设定监听主题:/guoguo/helloworld,与服务器端的主题完全一致PL.joinListen(/guoguo/helloworld); /接收到事件后,显示服务器信息function onData(event) guoguo.innerText=(event.get(hw);Pushlet Test(7) 启动服务器,即可看到页面上的信息每秒钟一次,进行定时的更新3.2. 主动控制发送消息3.2.1. 有刷新的提交信息(服务器端主动发送消息)(1) 创建一个servlet,并且注册到web.xml中Servlet代码package com.guoguo;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import nl.justobjects.pushlet.core.Dispatcher;import nl.justobjects.pushlet.core.Event;import nl.justobjects.pushlet.core.SessionManager;/* * Servlet implementation class ChatServlet */public class ChatServlet extends HttpServlet private static final long serialVersionUID = 1L;/* * see HttpServlet#HttpServlet() */public ChatServlet() super();/* * see HttpServlet#service(HttpServletRequest request, HttpServletResponse * response) */protected void service(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException / myUnicast();myMulticast();/ myBroadcast();request.getRequestDispatcher(chat.jsp).forward(request, response);private void myUnicast() Event event = Event.createDataEvent(/guoguo/myevent1);event.setField(key1, Unicast msg);Dispatcher.getInstance().unicast(event, piero); / 向ID为piero的用户推送System.out.println(success.);private void myMulticast() Event event = Event.createDataEvent(/guoguo/myevent1);/Event event = Event.createDataEvent(/guoguo);event.setField(key1, Multicast msg);Dispatcher.getInstance().multicast(event); / 向所有和myevent1名称匹配的事件推送System.out.println(wa success.);private void myBroadcast() Event event = Event.createDataEvent(/guoguo/myevent1); / 向所有的事件推送,不要求和这儿的myevent1名称匹配event.setField(key1, Broadcast msg);Dispatcher.getInstance().broadcast(event);System.out.println(asw success.);Web.xml ChatServlet ChatServlet com.guoguo.ChatServlet ChatServlet /ChatServlet (2) 页面端代码发送端base href=form action=/ChatServlet接收端base href=PL._init();PL.joinListen(/guoguo/myevent1);function onData(event) guoguo.innerText = (event.get(key1);启动服务器,从发送端提交信息,内容会在接收端显示出来3.2.2. 无刷新的提交信息(从客户端发送消息)发送端base hr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030年校园超市行业风险投资发展分析及投资融资策略研究报告
- 2025-2030年朗姆酒产业市场发展分析及发展趋势与投资研究报告
- 2025-2030年干贝行业市场深度分析及前景趋势与投资研究报告
- 行政管理经济法概论重要试卷及试题及答案
- 2025杭州市家具买卖合同
- 2025-2030年安防电子行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030年墙体保温材料产业市场深度调研及发展趋势与投资战略研究报告
- 水利水电工程专业会议盛况试题及答案
- 2025-2030年图书零售连锁行业市场发展分析及发展前景与投资机会研究报告
- 2025-2030年国内功能性饲料行业市场发展分析及发展前景与投资机会研究报告
- 高效课堂新授课评价量化表
- 信和SDS2MS使用说明书
- 维修手册震旦218现场
- 画法几何与阴影透视复习题(DOC)
- 螺旋密封的设计及在流体机械中的应用
- 青岛市失业人员登记表
- 烧结机工程施工设计方案
- 《中国好声音》全国校园海选招商方案(冠名)
- 广西安全文明施工费使用管理细则桂建质新版
- 存货质押贷款业务管理规定
- 公路路面基层施工技术规范JTJ034-93条文说明
评论
0/150
提交评论