Pushlet是使用较多的后台向前台推送信息的工具。前台订阅某个感兴趣的事件joinListen,触发后台的Pushlet的servlet,为该请求会话建立session,默认这个sessionID是随机的java.rmi.server.UID(后面会介绍pushlet二次开发,改掉这个UID,以便可以自由控制向某一个特点前台推送信息)。之后前台会向后台发送refresh请求,后台返回给前台下一次发送refresh的时间间隔,如此循环,以便维持session会话,宏观上就实现了前后台之间的长连接。

这里首先列出最简单的后台利用PullSource周期性地向订阅了某事件的所有网页客户端推送信息。

下载最新版本的Pushlet。MyEclipse下建立一个web工程,我这里叫PushletTest,将pushlet.jar加入引用路径,pushlet.properties和sources.properties放入WebRoot/WEB-INF下,工程结构如下图:

在web.xml中添加pushlet的servlet的声明,让这个servlet在服务器启动时就启动(load-on-startup为正数),web.xml代码如下:

http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

pushlet

nl.justobjects.pushlet.servlet.Pushlet

3

pushlet

/pushlet.srv

index.jsp

View Code

注意触发pushlet这个servlet的条件是请求pushlet.srv。

接下来就是自定义推送源,MyPushSource.java代码如下:

packagecom.mysrc;importjava.io.Serializable;importnl.justobjects.pushlet.core.Event;importnl.justobjects.pushlet.core.EventPullSource;public class MyPushSource implementsSerializable {public static class MySource1 extendsEventPullSource {

@Overrideprotected longgetSleepTime() {return 1000;

}

@OverrideprotectedEvent pullEvent() {

Event event=Event.createDataEvent("myevent1");

event.setField("key1","my_value1");returnevent;

}

}

}

View Code

每隔一秒钟就向订阅了myevent1的所有前端页面推送信息,这里是一个键值对。

然后需要在sources.properties声明该源(该文件现在只有这一行内容):

source1=com.mysrc.MyPushSource$MySource1

前台页面test.html代码如下:

PL._init();

PL.joinListen('myevent1');functiononData(event) {

alert(event.get("key1"));

}

View Code

PL是在ajax-pushlet-client.js中定义的。好了,将工程部署到Tomcat,启动,请求test.hmtl,就能看到my_value1的alert的显示了。

需要说明的是,也可以将test.html和ajax-pushlet-client.js放在本地,不用请求服务器上的,因为这儿的关键是触发服务器上的pushlet那个servlet,之后能进行心跳同步。打开ajax-pushlet-client.js,找到PL.pushletURL = PL._getWebRoot() + 'pushlet.srv';这一行,这儿PL._getWebRoot() 是通过ajax-pushlet-client.js在服务器上的路径得到url的。这儿咋们自己换成服务器的地址就可以了。

pushlet java_Pushlet实现后台信息推送(一)相关推荐

  1. 使用Pushlet实现后台信息推送(二)

    上一篇日志利用推送源周期性地向订阅了某一事件的所有网页端推送信息,但怎么实现向特定的某一个用户推送信息呢,想象一个网络聊天室,怎么向单独的一个好友私聊呢.问题的关键就是那个SessionID,Push ...

  2. 使用Pushlet实现后台信息推送(一)

    Pushlet是使用较多的后台向前台推送信息的工具.前台订阅某个感兴趣的事件joinListen,触发后台的Pushlet的servlet,为该请求会话建立session,默认这个sessionID是 ...

  3. 钉钉 php 推送,微信模板推送,钉钉信息推送

    上午的时候看到有朋友需要微信推送,正好我也需要,之前一直用 Server 酱的,但是最近用不了,想找一个替代品,一开始准备选择钉钉,除了打卡,我很少使用钉钉,邮件提醒是备用方案,其实和 Server ...

  4. 微信开发3之php模板信息推送

    模板信息推送:需要在后台开通了模板消息推送接口 PHP代码如下: <?php $appid="wxxxxxxxxxxxxxxxxxx"; //填写微信后台的appid $ap ...

  5. EasyPusher手机直播推送是如何实现后台直播推送的

    本文由EasyDarwin开源团队成员John提供:http://blog.csdn.net/jyt0551/article/details/52276062 EasyPusher Android是使 ...

  6. bmob云服务器信息推送,FAQ-Bmob后端云

    Q: Bmob 平台是做什么的? A: Bmob 是多租户无模式的移动应用云服务,它可以让 android/IOS/WP 等移动开 发者无需掌握任何一门服务器开发语言(如 JAVA/PHP 等),将注 ...

  7. 【imessage群发苹果推信】[iMessageSuspic](Apple推送服务)使用信息推送服务

    Apple信息推送服务(ApplePushNotificationservice), 由Apple根据官方新闻服务提供. 交货包括顶部,声音和Badgenumber比例指南(),应用程序可以在任何条件 ...

  8. uniapp之unipush安卓app信息推送

    第一步,uniapp 官网查找推送 uni-app官网 介绍业务.开通流程,请务必仔细阅读 UniPush使用指南 - DCloud问答 第二步,unipush相关链接 开通的unipush是封装了个 ...

  9. ASP.NET Core 使用SignalR后台实时推送数据给Echarts展示图表

    什么是 SignalR ASP.NET Core ASP.NET Core SignalR 是一种开放源代码库,可简化将实时 web 功能添加到应用程序的功能. 实时 web 功能使服务器端代码可以立 ...

最新文章

  1. HTML DOM getElementById() 方法
  2. Lucene4.3和Lucene3.5性能对比(一)
  3. vue 部门tree样式_vue+Element实现tree树形数据展示
  4. mysql存储过程while 遍历游标
  5. javascript立即调用的函数表达式
  6. 面向对象的一些基础概念
  7. Java 面试之数据结构
  8. 系统优化的方法有哪些
  9. 用Netty解析Redis网络协议
  10. Python爬虫实践(二) -- 爬虫进阶:爬取数据处理、数据库存储
  11. HashSet中add的执行过程
  12. 【第40题】2019年OCP认证12C题库062考试最新考试原题
  13. rhce考试试题以及答案_RedHat红帽认证 RHCE 7.0题库和答案
  14. 库存转换是什么意思_安全库存的设置:库存计划的看家本领
  15. 金融计量模型(十一):对波动率和相关性建模
  16. oracle重启rac2监听,RAC监听服务
  17. 虚拟局域网VLAN,trunk的各种使用
  18. python自动操作脚本_Python实现自动挂机脚本 | 沐雨浥尘
  19. 取得当前日期相对应的月初,月末,季初,季末,年初,年末
  20. ArrayList.add方法底层浅析

热门文章

  1. Python:实现ohms law欧姆定律算法(附完整源码)
  2. scala相关操作(三)
  3. 内容耦合 c语言例子,耦合性 内聚加实例
  4. JVM类加载机制讲解
  5. fltmgr.sys蓝屏代码如何解决?
  6. 14届蓝桥青少选拔赛2022年8月21日C++中高级在线考试
  7. Vue粒子特效(vue-particles插件) 粒子星空图
  8. CEO CFO COO CJO CAO CQO CTO
  9. 惠普linux进入bios设置u盘启动,如何进入bios设置,详细教您惠普如何进入bios设置u盘启动...
  10. Meteor中集成Vue注意事项