`
左手边
  • 浏览: 96597 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Pushlet技术的学习之一

阅读更多

 

1、基础概念:Pushlet是一种comet实现:在Servlet机制下,数据从server端的Java对象直接推送(push)到(动态)HTML页面,而无需任何Java applet或者插件的帮助。

2、什么事comet请参照

http://www.ibm.com/developerworks/cn/web/wa-lo-comet/

3、不多说了直接贴一个最简单的例子,

    1)将pushlet.jar包导入自己的项目;

    2)将pushlet.properties、sources.properties导入到src目录下

    3)修改web.xml文件如下(url-pattern暂时设置为/pushlet.srv

<servlet-name>pushlet</servlet-name>
    <servlet-class>nl.justobjects.pushlet.servlet.Pushlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
	<servlet-name>pushlet</servlet-name>
	<url-pattern>/pushlet.srv</url-pattern>
</servlet-mapping>

   4)编写一个java类如下

import java.io.UnsupportedEncodingException;

import nl.justobjects.pushlet.core.Event;
import nl.justobjects.pushlet.core.EventPullSource;

public class HelloWorldPlushlet implements Serializable {
	private static final long serialVersionUID = 1L;

	static public class HelloWorldEvent extends EventPullSource {
		@Override
		protected long getSleepTime() {
			return 1000; // 刷新时间
		}

		@Override
		protected Event pullEvent() {
			Event event = Event.createDataEvent("/source/event");// 事件标识
			String s = "你好";
			s = toISO88591(s);
			event.setField("msg", s);// 封装参数
			return null;
		}
	}

	public static String toISO88591(String str) {
		try {
			str = new String(str.getBytes("UTF-8"), "ISO-8859-1");
		} catch (UnsupportedEncodingException ex) {
			ex.printStackTrace();
		}
		return str;
	}

}

   上面有一个中文的处理方法,toISO88591()不然不支持中文。

   还有就是注意Event event = Event.createDataEvent("/source/event");// 事件标识

 

5)编写jsp文件如下<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
	<head>
		<title>index.html</title>
		<meta http-equiv="content-type" content="text/html; charset=UTF-8">
		<script type="text/javascript" src="js/ajax-pushlet-client.js"></script>
		<script type="text/javascript"> 
       		PL._init(); 
       		PL.joinListen('/source/event');//事件标识 在数据源中引用 
       		function onData(event) { 
           		alert(event.get("msg")); 
       		} 
    	</script>
	</head>
	<body>
	test
	</body>
</html>

   PL.joinListen('/source/event');//事件标识 在数据源中引用,注意跟上面的红色部分保持一致。

6)下面说一下web.xml中<url-pattern>的配置问题,查看ajax-pushlet-client.js源码会发现有下面这段代码_getWebRoot: function() {

		/** Return directory of this relative to document URL. */
		if (PL.webRoot != null) {
			return PL.webRoot;
		}
		//derive the baseDir value by looking for the script tag that loaded this file
		var head = document.getElementsByTagName('head')[0];
		var nodes = head.childNodes;
		for (var i = 0; i < nodes.length; ++i) {
			var src = nodes.item(i).src;
			if (src) {
				var index = src.indexOf("lib/ajax-pushlet-client.js");
				if (index >= 0) {
					PL.webRoot = src.substring(0, index);
					break;
				}
			}
		}
		return PL.webRoot;
	},

 注意var index = src.indexOf("lib/ajax-pushlet-client.js");这句话 这个方法就是取webRoot跟路径的,所以<url-pattern>的设置跟这里有关系,还有就是跟你使用ajax-pushlet-client.js的jsp页面有关系,我上面的jsp页面中src="js/ajax-pushlet-client.js"是这样导入js包的,所以我把ajax-pushlet-client.js中的代码改为var index = src.indexOf("js/ajax-pushlet-client.js");取根路径了,大家可以测试一下就明白了。

7)最后启动程序,大家就可以看到每一秒弹出一个“你好”窗口了。

 

 

分享到:
评论
14 楼 dxqrr 2014-04-14  
LZ不厚道,误导我们
13 楼 thewintersun 2013-12-13  
日哦, 没效果啊。
12 楼 vincentedlin 2013-12-10  
哥们,你上传的是pushlet的源码呀,可以上传个demo吗?
11 楼 youmeiyoubeizhanyong 2013-10-15  
这个客户端可以传参数到服务端不?如果能的话,那么服务端如何只发送信息到该客户端?
10 楼 左手边 2013-08-13  
恶魔眼睛 写道
页面没有任何反应。
应该可以啊,这个我是测试成功的例子
9 楼 恶魔眼睛 2013-07-28  
页面没有任何反应。
8 楼 恶魔眼睛 2013-07-28  
毫无效果。毫无效果。
7 楼 zhangyao 2013-01-29  
我想问一下,pushlet的性能怎么样?一般 2C8G的服务器最大支持多大的并发?
6 楼 czltx224 2013-01-24  
597272095 写道
为什么我按照你那样做没效果呢?

是啊,我按照上面的做了,21行那个返回值也改了,可是还是没效果啊
5 楼 bushkarl 2012-12-25  
HelloWorldPlushlet.java
文件第21行 应改成return event,否则运行会报错。
4 楼 cuisuqiang 2012-10-08  
传中文可以进行编码,参考:http://cuisuqiang.iteye.com/blog/1693528
3 楼 597272095 2012-09-12  
为什么我按照你那样做没效果呢?
2 楼 左手边 2012-08-07  
czltx224 写道
这个是长连接吗?

嗯,你可以参照http://www.ibm.com/developerworks/cn/web/wa-lo-comet/
1 楼 czltx224 2012-08-07  
这个是长连接吗?

相关推荐

    pushlet服务器推技术例子

    【Pushlet服务器推技术】是一种实时通信技术,主要用于构建...在压缩包文件“pushlet”中,可能包含了实现Pushlet技术的源代码、配置文件和示例应用,供开发者学习和参考,以便在自己的项目中集成和使用Pushlet服务。

    pushlet

    Pushlet 2.0.3是该技术的一个特定版本,可能包含以下关键特性: 1. **持久连接**:通过保持一个开放的HTTP连接,服务器可以在任何时候向客户端发送数据,而无需等待新的HTTP请求。 2. **多路复用**:一个连接可以...

    pushlet 之 Pushlet使用手把手实例

    Pushlet 是一个开源的、基于Java的实时信息发布系统,它采用推送技术(Push Technology)实现服务器向客户端实时发送数据,而无需客户端频繁发起请求。这种技术在实时性要求高的场景,如股票交易、在线聊天、实时...

    comet 框架 之 pushlet

    总的来说,Comet框架的Pushlet实现是一种高效的服务器推送技术,它通过持久化连接解决了传统Web应用实时性不强的问题,对于需要实时数据更新的应用场景具有显著的优势。开发者可以利用Pushlet轻松构建出实时交互的...

    服务器推送pushlet讲解

    Pushlet是基于Comet技术的一种实现,它为Java开发者提供了一种高效的服务器推送解决方案。 一、Comet技术 Comet是一种允许服务器长时间保持HTTP连接的技术,它打破了传统的Web应用模型,即客户端发起请求,服务器...

    pushlet实现简单的用户聊天

    在IT行业中,Pushlet是一种基于Java的推送技术,主要用于实现实时的数据传输,尤其是在Web应用中创建...通过学习和实践"pushlet实现简单的用户聊天",开发者可以掌握这种技术,并将其应用于各种复杂的实时交互应用中。

    服务器推送——PushLet的应用<一>

    【服务器推送技术——PushLet应用详解&lt;一&gt;】 在当今的互联网应用中,实时性成为了不可或缺的需求,无论是即时通讯、在线游戏还是股票交易,都需要服务器能够主动向客户端推送信息,而不是传统的请求-响应模式。这...

    基于Pushlet推技术的网络应用程序开发的研究

    【基于Pushlet推技术的网络应用程序开发的研究】这篇论文探讨了Pushlet技术在构建网络应用程序中的应用,Pushlet是一种服务器推(Server Push)技术,它允许服务器主动地将实时更新的数据推送到客户端的浏览器,而...

    pushlet jar包下载

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

    Pushlet简单示例测试

    Pushlet是一种基于Java的实时数据推送技术,它允许服务器向客户端主动推送数据,而无需客户端持续不断地轮询请求。在Web应用中,Pushlet能够显著提高用户体验,因为它减少了延迟并优化了服务器资源的使用。本示例...

    基于comet服务器推技术思路的Pushlet技术实现1

    本文主要讨论了一种基于Comet服务器推技术的Pushlet实现,这种技术允许服务器向客户端实时推送数据,而无需客户端持续发起请求。 Comet技术是一种优化的Web通信模式,其核心思想是利用持久化HTTP连接来实现实时数据...

    PushLet实例,可直接运行

    PushLet是一种基于Java的实时推送技术,用于在服务器和客户端之间进行双向通信,尤其是在Web应用中实现数据的即时更新。这个实例"PushLet实例,可直接运行"提供了一个完整的、可以直接执行的PushLet项目,包括必要的...

    pushlet简单配置应用

    Pushlet是一种基于Java的实时数据推送技术,由荷兰JustObjects公司开发。Pushlet库的核心功能是实现实时的服务器向客户端推送数据,而无需客户端频繁发起请求,这大大提高了网络应用的效率和用户体验。以下是对...

    Pushlet学习(二) -- Pushlet CookBook部分翻译 + 注释

    Pushlet是Java中的一种推技术,它允许服务器主动向客户端推送数据,而不仅仅是响应客户端的请求。在Web应用中,这种技术打破了传统的HTTP长轮询或短轮询机制,提供了实时性更好的通信方式。本篇内容主要围绕"Pushlet...

    pushlet.jar 和示例工程

    "pushlet.jar 和示例工程"是一个专注于实现服务器端向客户端主动推送消息的框架,它在Web开发领域中扮演着重要角色。...而提供的压缩包资源则为学习和实践Pushlet提供了便利,是深入研究和应用这一框架的重要资料。

    pushlet 之 官方示例解读与改造

    Pushlet是一种基于HTTP长轮询技术的轻量级推送服务,它允许服务器主动向客户端推送数据,而无需客户端持续发起请求。这种技术在实时性要求较高的应用场景,如在线聊天、股票更新、游戏状态同步等中,有着广泛的应用...

    pushlet例子

    Pushlet是服务器推送技术的一种早期实现,由Jackrabbit项目开发,它基于Java Servlet和JavaServer Pages (JSP) 技术。Pushlet的核心理念是通过长连接保持客户端与服务器之间的通信,从而实现实时数据推送。 Pushlet...

    pushlet 和comet 资料介绍

    Pushlet是Comet技术的一种具体实现,它们都旨在解决Web应用中的实时性问题。在服务器端,Pushlet使用`EventSource`和`EventSourceManager`来管理和处理事件,`EventSource`实现了`Runnable`接口,可以在多线程环境中...

Global site tag (gtag.js) - Google Analytics