`
cuisuqiang
  • 浏览: 3963142 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
3feb66c0-2fb6-35ff-968a-5f5ec10ada43
Java研发技术指南
浏览量:3672456
社区版块
存档分类
最新评论

pushlet 之 Pushlet使用手把手实例

阅读更多

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
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd">
<!-- $Id: web.xml,v 1.7 2005/02/21 17:21:49 justb Exp $ -->
<web-app>
	<!-- Define the pushlet servlet -->
	<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>
</web-app>
  • 后台代码HelloWorldPlushlet.java,该类包含一个内部类
package com;
import nl.justobjects.pushlet.core.Event;
import nl.justobjects.pushlet.core.EventPullSource;
public class HelloWorldPlushlet {	
	static public class HwPlushlet extends EventPullSource {
		// 休眠五秒
		@Override
		protected long getSleepTime() {
			return 5000;
		}
		@Override
		protected Event pullEvent() {
			Event event = Event.createDataEvent("/cuige/he");
			event.setField("mess", "hello,world!Plushlet!");
			return event;
		}
	}
}
  •  sources.properties清理其他,定义自己发布的内容

 

source1=com.HelloWorldPlushlet$HwPlushlet
  •  在JSP中调用
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		<meta http-equiv="Pragma" content="no-cache" />
		<script type="text/javascript" src="ajax-pushlet-client.js"></script>		
		<script type="text/javascript">
			PL._init(); 
			PL.joinListen('/cuige/he');
			function onData(event) { 
				alert(event.get("mess")); 
				// 离开
				// PL.leave();
			}
		</script>
	</head>
	<body>
		<center>
		<h1>
			my first pushlet!
		</h1>
		</center>
	</body>
</html>

 

  •  将工程部署到Tomcat后访问,该页面以五秒钟一个间隔,收到后台传来的数据!

工程部署后如下图展示

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

 

请您到ITEYE看我的原创:http://cuisuqiang.iteye.com

或支持我的个人博客,地址:http://www.javacui.com

 

15
2
分享到:
评论
23 楼 Jonny_qian 2017-02-16  
用setField返回一些简单,重要的信息,不要保存太多的信息字段在里面  
22 楼 zhanggen515200 2017-02-06  
20170106 写道
为什么我下载你的mypushlet.rar 怎么出不来 报404

我也是,服务器跑起来了,但是404,Page not found
21 楼 20170106 2017-01-11  
为什么我下载你的mypushlet.rar 怎么出不来 报404
20 楼 zengliangxi 2015-03-12  
楼主在tomcat中没问题,可是放到weblogic中部署时报错Servlet: "pushlet" failed to preload on startup in Web application: "hdq.war". java.lang.NullPointerException at nl.justobjects.pushlet.servlet.Pushlet.init(Pushlet.java:40) at javax.servlet.GenericServlet.init(GenericServlet.java:241) at weblogic.servlet.internal.StubSecurityHelper$ServletInitAction.run(StubSecurityHelper.java:283) at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) at weblogic.security.service.SecurityManager.runAs(Unknown Source) at weblogic.servlet.internal.StubSecurityHelper.createServlet(StubSecurityHelper.java:64) at weblogic.servlet.internal.StubLifecycleHelper.createOneInstance(StubLifecycleHelper.java:58) at weblogic.servlet.internal.StubLifecycleHelper.<init>(StubLifecycleHelper.java:48) at weblogic.servlet.internal.ServletStubImpl.prepareServlet(ServletStubImpl.java:521) at weblogic.servlet.internal.WebAppServletContext.preloadServlet(WebAppServletContext.java:1893) at weblogic.servlet.internal.WebAppServletContext.loadServletsOnStartup(WebAppServletContext.java:1870) at weblogic.servlet.internal.WebAppServletContext.preloadResources(WebAppServletContext.java:1790) at
19 楼 shinebar 2014-12-02  
楼主你运行没?我写的示例基本上和你的一样,怎么在浏览器的左下角提示,pushlet died -2
18 楼 ld7413662 2014-11-13  
liuya 写道
lk0098 写道
请教一下,启动的时候出现EventSourceManager: cannot load sources.properties from classpath,这个路径是在哪设置的?
EventSourceManager: cannot load sources.properties from classpath, will try from D:\Program Files\apache-tomcat-7.0.54\webapps\mypushlet\/WEB-INF\sources.properties




同求,你们解决了吗?

可以把sources.properties,pushlet.properties两个文件换个目录,我放在src下面.
17 楼 zhangb5228509 2014-09-04  
这种方式感觉对服务器的压力还是很大
16 楼 cuisuqiang 2014-08-29  
liuya 写道
lk0098 写道
请教一下,启动的时候出现EventSourceManager: cannot load sources.properties from classpath,这个路径是在哪设置的?
EventSourceManager: cannot load sources.properties from classpath, will try from D:\Program Files\apache-tomcat-7.0.54\webapps\mypushlet\/WEB-INF\sources.properties




同求,你们解决了吗?

sources.properties就在WEB-INF下,我的代码里面不是有吗,难道有问题?
15 楼 liuya 2014-08-28  
lk0098 写道
请教一下,启动的时候出现EventSourceManager: cannot load sources.properties from classpath,这个路径是在哪设置的?
EventSourceManager: cannot load sources.properties from classpath, will try from D:\Program Files\apache-tomcat-7.0.54\webapps\mypushlet\/WEB-INF\sources.properties




同求,你们解决了吗?
14 楼 依柳触雪 2014-08-19  
lk0098 写道
请教一下,启动的时候出现EventSourceManager: cannot load sources.properties from classpath,这个路径是在哪设置的?
EventSourceManager: cannot load sources.properties from classpath, will try from D:\Program Files\apache-tomcat-7.0.54\webapps\mypushlet\/WEB-INF\sources.properties



同求...
13 楼 lk0098 2014-07-21  
请教一下,启动的时候出现EventSourceManager: cannot load sources.properties from classpath,这个路径是在哪设置的?
EventSourceManager: cannot load sources.properties from classpath, will try from D:\Program Files\apache-tomcat-7.0.54\webapps\mypushlet\/WEB-INF\sources.properties
12 楼 cuisuqiang 2013-12-31  
dongfangbubai1 写道
event怎么返回一个对象呢??????

如果返回的是字符串,那就只能返回字符串,用对象,可以更好的兼容
11 楼 cuisuqiang 2013-12-31  
心海新航 写道
想请教个问题,用pushlet如何实现实时提醒未读消息数呢?我现在遇到的问题是取不到登陆用户的session。求指教,非常感谢!

你说的这个功能可以使用AJAX实时刷新来实现。获得SessionID可以通过传递参数的方式实现,不过貌似加参数在后台获取很麻烦。如果你要更好方案欢迎分享
10 楼 dongfangbubai1 2013-12-30  
event怎么返回一个对象呢??????
9 楼 心海新航 2012-12-11  
想请教个问题,用pushlet如何实现实时提醒未读消息数呢?我现在遇到的问题是取不到登陆用户的session。求指教,非常感谢!
8 楼 cuisuqiang 2012-11-14  
sblig 写道
sblig 写道
cuisuqiang 写道
sblig 写道
IE8 崩溃 假死。。。

竟然有这种现象?我回头验证一下!

//现在已经处理好了,我的处理是这样的
protected Event pullEvent() {
  Event event = new Event("/null");//先创建到空的上面

  Map<String, List<HintArriveProcessInfo>> hintProMap =
HintArriveProcessTask.getHintMap();
  if (hintProMap.size() > 0) {

  }

}

谢谢分享!
7 楼 sblig 2012-11-13  
sblig 写道
cuisuqiang 写道
sblig 写道
IE8 崩溃 假死。。。

竟然有这种现象?我回头验证一下!

//现在已经处理好了,我的处理是这样的
protected Event pullEvent() {
  Event event = new Event("/null");//先创建到空的上面

  Map<String, List<HintArriveProcessInfo>> hintProMap =
HintArriveProcessTask.getHintMap();
  if (hintProMap.size() > 0) {

  }

}
6 楼 sblig 2012-11-13  
cuisuqiang 写道
sblig 写道
IE8 崩溃 假死。。。

竟然有这种现象?我回头验证一下!

protected Event pullEvent() {

}
5 楼 cuisuqiang 2012-11-13  
sblig 写道
IE8 崩溃 假死。。。

竟然有这种现象?我回头验证一下!
4 楼 sblig 2012-11-12  
IE8 崩溃 假死。。。

相关推荐

    PushLet实例,可直接运行

    5. **文档**:可能包含简单的使用指南或API文档,帮助开发者理解如何部署和使用PushLet实例。 使用这个实例,开发者可以学习如何设置PushLet服务器,创建推送通道,以及在客户端处理推送的消息。这对于学习和实践...

    pushlet实例以及jar

    为了更好地理解和使用这个Pushlet实例,开发者需要做以下几步: 1. **下载与解压**:首先,需要下载提供的压缩包文件,并将其解压到本地工作目录。 2. **研究源码**:查看提供的Pushlet实例代码,了解其工作原理和...

    PUSHLET即时通讯工程实例

    **PUSHLET即时通讯工程实例详解** PUSHLET是一种基于Java技术实现的即时通讯系统,它允许服务器主动向客户端推送数据,而无需客户端持续轮询请求。这种技术在实时性要求高的应用中非常常见,如在线聊天、股票交易、...

    pushlet实例(java服务端推送消息)

    此实例采用 pushlet2.0.4 官方最新 servlet+jsp 实现多个客户端连接到web服务器,由服务端推送消息至客户端(或指定id的客户端),代码中没有用官网的jar文件,而是用的源码,做了一定的修改,实现了每个客户端都可以...

    PushLet实例,服务器消息推送

    【标题】"PushLet实例,服务器消息推送"指的是一个基于Java技术实现的服务器端消息推送系统,名为PushLet。在互联网应用中,实时性是非常重要的一个特性,例如在线聊天、股票更新、新闻推送等场景。传统的HTTP协议是...

    pushlet 之 官方示例解读与改造

    服务器端,Pushlet使用一个叫做`PushServer`的类来处理来自客户端的订阅请求。订阅者通过发送一个HTTP GET请求到特定URL来订阅消息,URL中包含了订阅的主题。服务器端会将这个订阅请求保存下来,并保持与客户端的...

    pushlet服务器推技术例子

    通过上述机制,Pushlet服务器推技术实例能够实现高效的实时通信,尤其适用于需要实时交互的应用,如在线聊天室、实时股票报价等。在压缩包文件“pushlet”中,可能包含了实现Pushlet技术的源代码、配置文件和示例...

    comet 框架 之 pushlet

    在pushlet-2.0.3这个压缩包中,可能包含了Pushlet框架的源代码、文档、示例代码和配置文件等,用于帮助开发者理解和使用Pushlet。开发者可以通过阅读源码了解其工作原理,参考示例快速入门,通过配置文件定制Pushlet...

    pushlet

    3. **事件驱动**:Pushlet使用事件驱动的架构,当服务器端有新的数据可用时,会触发事件并进行推送。 4. **兼容性**:可能支持多种操作系统和Web服务器,以适应不同的部署环境。 5. **API**:提供一套API供开发者...

    pushlet jar包下载

    服务器推 pushlet 服务器推 pushlet 服务器推 pushlet 服务器推 pushlet

    服务器推送pushlet讲解

    这个名为"pushlet-record.txt"的文件可能包含了Pushlet框架的使用记录、日志信息或者是一些示例代码。分析这个文件可以帮助你更好地理解和使用Pushlet框架,例如,你可以找到服务器如何处理推送事件,客户端如何建立...

    java服务端推送实例-pushlet-及中文问题

    本实例将介绍如何使用Pushlet实现服务端推送,并解决中文推送时出现的问题。 首先,我们来看Pushlet的基本原理。Pushlet基于Servlet和JSP技术,通过HTTP连接保持来实现实时通信。当客户端(浏览器)与服务器建立...

    pushlet使用说明(包括中文乱码)

    在使用 Pushlet 进行部署时,以下是一些关键步骤: 1. **下载 Pushlet**:首先,你需要从官方网站获取 Pushlet 的最新版本,例如文中提到的 pushlet-2.0.4 版本。 2. **创建 Web 项目**:在 IDE(如 MyEclipse)中...

    使用Ext Pushlet 实现的点对点聊天功能最新

    前台使用Ext ,后台使用pushlet /pushlet/WebRoot/index.jsp 页面主要包含几个部分。 Ext.PUSHLET_URL='piccUtil'; // 发送消息的地址 Ext.fcontent='fcontent'; // 显示窗口或有新消息时, 显示好友ID的区域 ...

    pushlet简单配置应用

    5. **客户端JavaScript使用**:在HTML页面中,你需要引入`ajax-pushlet-client.js`这个客户端JavaScript库。然后,通过调用`PL._init()`初始化Pushlet,`PL.joinListen('/pushlet/test')`订阅特定的主题,例如'/...

    pushlet例子

    Pushlet服务器使用Servlet容器(如Tomcat)运行,处理来自客户端的连接,并负责推送数据。Pushlet客户端通常是一个JavaScript脚本,它在用户浏览器中运行,用于建立与服务器的连接并接收推送的数据。 1. **Pushlet...

    使用Ext Pushlet 实现的点对点聊天功能

    前台使用Ext ,后台使用pushlet /pushlet/WebRoot/index.jsp 页面主要包含几个部分。 Ext.PUSHLET_URL='piccUtil'; // 发送消息的地址 Ext.fcontent='fcontent'; // 显示窗口或有新消息时, 显示好友ID的区域 ...

    Pushlet的Ajax-pushlet-client.js分析

    `_doRequest(anEvent, aQuery)`是发送请求的关键,它根据当前状态和事件决定是否发起请求,同时使用回调函数`_onResponse`处理响应。`_getWebRoot`方法获取项目根目录,确保请求URL的正确性。`_getXML`方法则负责...

    pushlet.jar 和示例工程

    示例工程则提供了一个快速入门的起点,通过实际运行和调试,开发者可以快速掌握Pushlet的使用方法。 总的来说,Pushlet框架是实现Web应用中服务器主动推送消息的一个强大工具,尤其适用于需要实时交互的场景。通过...

Global site tag (gtag.js) - Google Analytics