ImageVerifierCode 换一换
格式:DOC , 页数:8 ,大小:81KB ,
资源ID:3174577      下载积分:20 文钱
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,省得不是一点点
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.wenke99.com/d-3174577.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(使用Pushlet来实现服务器端向客户端推送信息.doc)为本站会员(sk****8)主动上传,文客久久仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文客久久(发送邮件至hr@wenke99.com或直接QQ联系客服),我们立即给予删除!

使用Pushlet来实现服务器端向客户端推送信息.doc

1、使用 Pushlet 来实现服务器端向客户端推送信息1.实现方式:有两种实现方式:1. 通过配置文件来实现定时的从服务器端向客户端推送信息2. 通过 API 主动向另外一端推送信息以下分别给予介绍。2.特别注意在开始测试之前,有两点非常重要,需要实现讲明,否则程序将会无法正常运行:2.1. JSP 页面上的设定JSP 页面上必须添加以下代码以确保 Pushlet 能够正确的获得后台服务的地址:“2.2. Pushlet 的 JS 文件的 Bug 修改需要修改被引用的 JS 文件 ajax-pushlet-client.js 的内容,找到PL.pushletURL = PL._getWebRoo

2、t() + pushlet.srv;将其修改为PL.pushletURL = pushlet.srv;修改的原因是 Pushlet 进行地址解析的方法在某些应用中会解析错误,导致请求的路径是nullpushlet.srv?,最终导致无法正确的请求到服务器的信息。2.3. 中文问题一般情况下,如果不做特殊处理,中文问题将会导致 Pushlet 的客户端停止响应,解决办法是,在使用 Pushlet 的客户端代码发送消息之前,将其进行转码,代码为encodeURIComponent( msg)3.正式开始以上准备工作完毕,就可以正式的开发测试样例了。3.1. 定时的从后台向前台 push 信息(1)

3、 在 eclipse 中创建一个动态的 web 工程(2) 配置及库文件文件:从 http:/ 下载最新的 pushlet 的开发包,将其中的以下文件按照描述进行设定序号文件名 源位置 目标位置 备注1. pushlet.jar pushlet-2.0.4lib 项目类路径 如果使用的是applet 的话,还需要将pushletclient.jar 设置到项目的类路径中去2. log4j.propertiespushlet.propertiessources.propertiespushlet-2.0.4webappspushletWEB-INFclasses项目的 src 根路径 注意稍后需

4、要修改sources.properties,其他两个文件的内容不需要修改3. ajax-pushlet-client.js pushlet-2.0.4webappspushletlib项目的 webrootlib 需要按照之前的描述修改其中的内容(3) 修改 web.xml,将 pushlet 的自启动 servlet 添加进去pushletnl.justobjects.pushlet.servlet.Pushlet1pushlet/pushlet.srv(4) 创建服务器端代码,特别注意类和内部静态类的名字/* */package com.guoguo;import java.io.Seri

5、alizable;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 = -89

6、40934044114406724L;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;/每一秒钟自动执行一次/*

7、 (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

8、data=new String(data.getBytes(“UTF-8“),“ISO-8859-1“); catch (UnsupportedEncodingException e) e.printStackTrace();event.setField(“hw“,data);return event;(5) 注册服务器端代码为事件源,在 sources.properties 文件中,添加以下行source7=com.guoguo.HelloWorldPushlet$HWPushlet以上方式适用于有内部类的情况,如果没有内部类的话,使用以下的方式进行注册(这时外部类必须继承父类 EventP

9、ullSource)source7=com.guoguo.HelloWorldPushlet(6) 页面(可以参考页面内注释信息)Pushlet Test“/初始化pushlet客户端PL._init();/设定运行时显示调试信息,不需要时,直接删掉即可PL.setDebug(true);/设定监听主题:/guoguo/helloworld,与服务器端的主题完全一致PL.joinListen(/guoguo/helloworld);/接收到事件后,显示服务器信息function onData(event) guoguo.innerText=(event.get(“hw“);Pushlet Te

10、st(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.ser

11、vlet.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

12、= 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();

13、/ 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

14、.“);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 myBroadcas

15、t() Event event = Event.createDataEvent(“/guoguo/myevent1“); / 向所有的事件推送,不要求和这儿的 myevent1 名称匹配event.setField(“key1“, “Broadcast msg“);Dispatcher.getInstance().broadcast(event);System.out.println(“asw success.“);Web.xmlChatServletChatServletcom.guoguo.ChatServletChatServlet/ChatServlet(2) 页面端代码发送端“/Ch

16、atServlet“接收端“PL._init();PL.joinListen(/guoguo/myevent1);function onData(event) guoguo.innerText = (event.get(“key1“);启动服务器,从发送端提交信息,内容会在接收端显示出来3.2.2. 无刷新的提交信息(从客户端发送消息)发送端“PL._init();function sendnews(msg) p_publish(/guoguo/myevent1, key1,encodeURIComponent(msg),key2,msg2);接收端“PL._init();PL.joinListen(/guoguo/myevent1);function onData(event) guoguo.innerText = (event.get(“key1“);启动服务器,从发送端提交信息,内容会在接收端显示出来

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。