Pushlet(一种comet 架构的实现)是基于Servlet 机制,数据从server端的Java 对象直接推送(push)
到客户端浏览器的(动态)HTML 页面,而无需任何Java applet 或者插件的帮助。
  • 在MyEclipse中创建工程。附件包含了从官方下载的Pushlet包已经本次的源码包,直接导入到开发工具即可。
  • 在创建的工程中增加pushlet.jar,log4j.jar。拷贝pushlet.properties,sources.properties到WEB-INF下。
  • 拷贝ajax-pushlet-client.js到WebRoot下。
  • 配置web.xml
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE web-app
  3. PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
  4. "http://java.sun.com/dtd/web-app_2_3.dtd">
  5. <!-- $Id: web.xml,v 1.7 2005/02/21 17:21:49 justb Exp $ -->
  6. <web-app>
  7. <!-- Define the pushlet servlet -->
  8. <servlet>
  9. <servlet-name>pushlet</servlet-name>
  10. <servlet-class>nl.justobjects.pushlet.servlet.Pushlet</servlet-class>
  11. <load-on-startup>3</load-on-startup>
  12. </servlet>
  13. <!-- Define the Servlet Mappings. -->
  14. <!-- The pushlet -->
  15. <servlet-mapping>
  16. <servlet-name>pushlet</servlet-name>
  17. <url-pattern>/pushlet.srv</url-pattern>
  18. </servlet-mapping>
  19. </web-app>
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE web-app
  3. PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
  4. "http://java.sun.com/dtd/web-app_2_3.dtd">
  5. <!-- $Id: web.xml,v 1.7 2005/02/21 17:21:49 justb Exp $ -->
  6. <web-app>
  7. <!-- Define the pushlet servlet -->
  8. <servlet>
  9. <servlet-name>pushlet</servlet-name>
  10. <servlet-class>nl.justobjects.pushlet.servlet.Pushlet</servlet-class>
  11. <load-on-startup>3</load-on-startup>
  12. </servlet>
  13. <!-- Define the Servlet Mappings. -->
  14. <!-- The pushlet -->
  15. <servlet-mapping>
  16. <servlet-name>pushlet</servlet-name>
  17. <url-pattern>/pushlet.srv</url-pattern>
  18. </servlet-mapping>
  19. </web-app>
  • 后台代码HelloWorldPlushlet.java,该类包含一个内部类
  1. package com;
  2. import nl.justobjects.pushlet.core.Event;
  3. import nl.justobjects.pushlet.core.EventPullSource;
  4. public class HelloWorldPlushlet {
  5. static public class HwPlushlet extends EventPullSource {
  6. // 休眠五秒
  7. @Override
  8. protected long getSleepTime() {
  9. return 5000;
  10. }
  11. @Override
  12. protected Event pullEvent() {
  13. Event event = Event.createDataEvent("/cuige/he");
  14. event.setField("mess", "hello,world!Plushlet!");
  15. return event;
  16. }
  17. }
  18. }
  1. package com;
  2. import nl.justobjects.pushlet.core.Event;
  3. import nl.justobjects.pushlet.core.EventPullSource;
  4. public class HelloWorldPlushlet {
  5. static public class HwPlushlet extends EventPullSource {
  6. // 休眠五秒
  7. @Override
  8. protected long getSleepTime() {
  9. return 5000;
  10. }
  11. @Override
  12. protected Event pullEvent() {
  13. Event event = Event.createDataEvent("/cuige/he");
  14. event.setField("mess", "hello,world!Plushlet!");
  15. return event;
  16. }
  17. }
  18. }
  • sources.properties清理其他,定义自己发布的内容
  1. source1=com.HelloWorldPlushlet$HwPlushlet
  1. source1=com.HelloWorldPlushlet$HwPlushlet
  • 在JSP中调用
  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <meta http-equiv="Pragma" content="no-cache" />
  6. <script type="text/javascript" src="ajax-pushlet-client.js"></script>
  7. <script type="text/javascript">
  8. PL._init();
  9. PL.joinListen('/cuige/he');
  10. function onData(event) {
  11. alert(event.get("mess"));
  12. // 离开
  13. // PL.leave();
  14. }
  15. </script>
  16. </head>
  17. <body>
  18. <center>
  19. <h1>
  20. my first pushlet!
  21. </h1>
  22. </center>
  23. </body>
  24. </html>
  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <meta http-equiv="Pragma" content="no-cache" />
  6. <script type="text/javascript" src="ajax-pushlet-client.js"></script>
  7. <script type="text/javascript">
  8. PL._init();
  9. PL.joinListen('/cuige/he');
  10. function onData(event) {
  11. alert(event.get("mess"));
  12. // 离开
  13. // PL.leave();
  14. }
  15. </script>
  16. </head>
  17. <body>
  18. <center>
  19. <h1>
  20. my first pushlet!
  21. </h1>
  22. </center>
  23. </body>
  24. </html>
  • 将工程部署到Tomcat后访问,该页面以五秒钟一个间隔,收到后台传来的数据!

工程部署后如下图展示

每次访问时,后台都会打印增加到管理中的用户信息,当关闭浏览器后,服务器会在超时后自动清理!

pushlet 之 Pushlet使用手把手实例的更多相关文章

  1. 手把手实例对比String、StringBuilder字符串的连接效率及StringBuilder和StringBuffer线程安全的比较

    一.字符串连接的效率问题 使用String连接字符串时为什么慢? 小知识点 java中对数组进行初始化后,该数组所占的内存空间.数组长度都是不可变的. 创建一个字符串,为字符串对象分配内存空间,会耗费 ...

  2. goEasy消息推送,pushlet 向特写用户实时推送

    goEasy 1先去goEasy官网注册goeasy.io,并创建application,得到superKey 2引入js <script type="text/javascript& ...

  3. pushlet

    自己准备做一个小游戏,租个云服务,然后挂在网上,可以跟同学一起玩,不过首先布置的是,这个游戏是否能实现,多人在线网页游戏,考虑到是否能够实时查询,在网上借鉴了下聊天原理,http长连接,搜索到push ...

  4. Pushlet浏览器长连接通讯

    原文链接:http://cuisuqiang.iteye.com/blog/1416771 Pushlet(一种comet 架构的实现)是基于Servlet 机制,数据从server端的Java 对象 ...

  5. pushlet实现服务器端向客户端推送信息

    使用Pushlet来实现服务器端向客户端推送信息 1.   实现方式: 有两种实现方式: 1.         通过配置文件来实现定时的从服务器端向客户端推送信息 2.         通过API主动 ...

  6. 使用Pushlet将消息从服务器端推送到客户端

    使用Pushlet来实现服务器端向客户端推送信息 1.   实现方式: 有两种实现方式: 1.         通过配置文件来实现定时的从服务器端向客户端推送信息 2.         通过API主动 ...

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

        使用Pushlet来实现服务器端向客户端推送信息 1.   实现方式: 有两种实现方式: 1.         通过配置文件来实现定时的从服务器端向客户端推送信息 2.         通过A ...

  8. Pushlet实现后台信息推送(一)

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

  9. Pushlet实现后台信息推送(二)

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

随机推荐

  1. js冒泡法和数组转换成字符串示例代码

    将数组转换成字符串的方法有很多,讲解下js冒泡法的使用.js代码: //js冒泡法与数据转换为字符串的例子 //整理:www.jbxue.com window.onload = function(){ ...

  2. Java中instanceof关键字的理解

    java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例.instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例. 用法: res ...

  3. Disk performance

    http://blogs.msdn.com/b/ntdebugging/archive/2014/12/09/disk-performance-internals.aspx http://blogs. ...

  4. HDS(日立)AMS2000系列存储管理配置方法

    转自:老管网络日志 配置日立存储AMS2000系列时也要和IBM存储一样,首先在客户端或者管理机上安装一个客户端,通过这个客户端再去管理存储. 管理软件名称为Storage Navigator Mod ...

  5. 过滤4字节及以上的字符c++实现

    这个是根据php的一个版本改的,用来处理utf-8编码的多字节字符,比如中文,俄文等等. #include <iostream> #include <string> int s ...

  6. 简单的java程序

    1.二分查找,java的输入与输出 package com; public class Firstapp{ public static void main(String args[]) { java. ...

  7. 算法初探——大O表示法

    #include <stdio.h> #include<malloc.h> int sum2(int n)//时间复杂度为常数,记为大欧-->O(1) { ; sum = ...

  8. dubbox2.8.4例子教程一

    简介 Dubbo是一个来自阿里巴巴的开源分布式服务框架,当当根据自身的需求,为Dubbo实现了一些新的功能,包括REST风格远程调用.Kryo/FST序列化等等.并将其命名为Dubbox(即Dubbo ...

  9. jQuery或者js保存文件到本地

    一: // 浏览文件夹(指定文件路径) function BrowseFolder() { try { var Message = "Please select the folder pat ...

  10. [镜像]镜像操作losetup

    安装完之后查看一下版本 /usr/sbin/debootstrap –version转自:http://blog.csdn.net/cnyyx/article/details/27182833 1.挂 ...