`

pushlet笔记 Event

阅读更多
public class Event implements Protocol, Serializable {

	protected Map attributes = new HashMap(3);

	public Event(String anEventType) {
		this(anEventType, null);
	}

	//初始化方法 设置事件的时间 类型 属性  这些数据都在map中
	public Event(String anEventType, Map theAttributes) {

		if (theAttributes != null) {
			setAttrs(theAttributes);
		}

		// Set required field event type
		setField(P_EVENT, anEventType);

		// Set time in seconds since 1970
		setField(P_TIME, System.currentTimeMillis() / 1000);
	}

	//初始化方法 设置属性  因为没有提供默认的时间类型, 所以属性中必须包含类型信息
	public Event(Map theAttributes) {
		if (!theAttributes.containsKey(P_EVENT)) {
			throw new IllegalArgumentException(P_EVENT + " not found in attributes");
		}
		setAttrs(theAttributes);
	}

	public static Event createDataEvent(String aSubject) {
		return createDataEvent(aSubject, null);
	}

	//创建数据事件  设置主题 
	public static Event createDataEvent(String aSubject, Map theAttributes) {
		Event dataEvent = new Event(E_DATA, theAttributes);
		dataEvent.setField(P_SUBJECT, aSubject);
		return dataEvent;
	}

	//拿到事件类型
	public String getEventType() {
		return getField(P_EVENT);
	}

	//拿到事件主题
	public String getSubject() {
		return getField(P_SUBJECT);
	}

	public void setField(String name, String value) {
		attributes.put(name, value);
	}

	public void setField(String name, int value) {
		attributes.put(name, value + "");
	}

	public void setField(String name, long value) {
		attributes.put(name, value + "");
	}

	public String getField(String name) {
		return (String) attributes.get(name);
	}

	/**
	 * Return field; if null return default.
	 */
	public String getField(String name, String aDefault) {
		String result = getField(name);
		return result == null ? aDefault : result;
	}

	public Iterator getFieldNames() {
		return attributes.keySet().iterator();
	}

	public String toString() {
		return attributes.toString();
	}

	/**
	 * Convert to HTTP query string.
	 * 拼出一个http  get请求  id=1&name=xxx&age=13$v=34  类似这样的
	 */
	public String toQueryString() {
		String queryString = "";
		String amp = "";
		for (Iterator iter = getFieldNames(); iter.hasNext();) {
			String nextAttrName = (String) iter.next();
			String nextAttrValue = getField(nextAttrName);
			queryString = queryString + amp + nextAttrName + "=" + nextAttrValue;
			// After first add "&".
			amp = "&";
		}

		return queryString;
	}

	//转换成xml格式  strict  true的话会把其中value的特殊字符转换成html的格式 < > \' \" \\ &
	//转成 <event  id="id"  name="name" />
	public String toXML(boolean strict) {
		String xmlString = "<event ";
		for (Iterator iter = getFieldNames(); iter.hasNext();) {
			String nextAttrName = (String) iter.next();
			String nextAttrValue = getField(nextAttrName);
			xmlString = xmlString + nextAttrName + "=\"" + (strict ? Sys.forHTMLTag(nextAttrValue) : nextAttrValue) + "\" ";
		}

		xmlString += "/>";
		return xmlString;
	}

	//默认xml不转成html特殊字符
	public String toXML() {
		return toXML(false);
	}

	public Object clone() {
		// Clone the Event by using copy constructor
		return new Event(attributes);
	}

	/**
	 * Copy given attributes into event attributes
	 */
	private void setAttrs(Map theAttributes) {
		attributes.putAll(theAttributes);
	}
}
3
1
分享到:
评论
2 楼 boys 2012-08-18  
1 楼 boys 2012-08-18  

相关推荐

    pushlet的笔记

    - **Event机制**:《pushlet笔记 Event.htm》讨论了Pushlet中的事件模型,这是其核心工作原理的一部分,通过事件驱动来触发服务器向客户端的推送。 5. **客户端分析**: - **客户端源码**:《(三)Pushlet框架...

    pushlet简单配置应用

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

    pushlet jar包下载

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

    pushlet

    Pushlet的核心组件是Pushlet Server和Pushlet Client。Pushlet Server作为服务端,接收并处理客户端的连接,当有新的数据可用时,会主动将数据推送到已经建立连接的客户端。Pushlet Client则是在用户端运行的程序,...

    pushlet 和comet 资料介绍

    在服务器端,Pushlet使用`EventSource`和`EventSourceManager`来管理和处理事件,`EventSource`实现了`Runnable`接口,可以在多线程环境中运行,确保服务器能够并发地处理多个客户端的请求。 总的来说,Pushlet和...

    pushlet 之 Pushlet使用手把手实例

    【Pushlet 使用手把手实例详解】 Pushlet 是一个开源的、基于Java的实时信息发布系统,它采用推送技术(Push Technology)实现服务器向客户端实时发送数据,而无需客户端频繁发起请求。这种技术在实时性要求高的...

    pushlet服务器推技术例子

    3. **Event**:Pushlet机制基于事件驱动,当服务器端有新的事件(如新的聊天消息)发生时,会生成一个事件对象,然后通过已建立的连接将这个事件推送到相关的客户端。 4. **Session Management**:Pushlet支持多...

    comet 框架 之 pushlet

    3. **数据推送**:当Event Source有新的数据时,Pushlet Server会将数据封装成HTTP响应,通过已建立的连接推送给客户端。 4. **客户端处理**:客户端接收到数据后,根据需要进行处理并显示,同时保持连接开放以接收...

    服务器推送pushlet讲解

    Pushlet的核心概念包括Pushlet服务器、Pushlet客户端和Pushlet事件。 1. Pushlet服务器:这是Comet服务的实现,负责接收客户端连接并保持连接打开状态,直到有新的数据可推送到客户端。 2. Pushlet客户端:通常是一...

    pushlet.jar 和示例工程

    "pushlet.jar 和示例工程"是一个专注于实现服务器端向客户端主动推送消息的框架,它在Web开发领域中扮演着重要角色。Pushlet框架的设计旨在克服传统的HTTP协议中客户端请求、服务器响应的被动通信模式,转而采用一种...

    pushlet实现简单的用户聊天

    在IT行业中,Pushlet是一种基于Java的推送技术,主要用于实现实时的数据传输,尤其是在Web应用中创建实时聊天、通知服务等功能。Pushlet是基于HTTP连接持久化的概念,它允许服务器主动向客户端推送数据,而无需...

    pushlet文档和项目

    4. **Event**:事件是Pushlet中传输的数据单元。当发布者创建一个事件并发送到服务器时,服务器会将这个事件推送给所有订阅了该事件的客户端。 5. **Subscription**:订阅是客户端表达对特定事件类型的兴趣。订阅者...

    pushlet框架做的小例子

    **Pushlet框架详解** Pushlet框架,又称为Java Pushlet,是一种基于Java的实时推送技术框架,由Marc Fleury创建并开源。Pushlet的核心概念是实现服务器向客户端的主动推送数据,而不是传统的HTTP请求-响应模式,即...

    pushlet获取参数修改过的jar包

    1. nl.justobjects.pushlet.core.Session,添加了event域和getEvent()方法,修改了public static Session create(String anId, Event anEvent)方法 public static Session create(String anId, Event anEvent) ...

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

    在 `pullEvent` 方法中,你可以创建 Event 对象,并设置其字段,如示例中的 `/wxl/hw` 主题和 "HelloWorld!!!!" 数据。这个方法会在每个指定的休眠时间间隔后被调用,以便向客户端发送新的数据。 在客户端,你需要...

    Pushlet的Ajax-pushlet-client.js分析

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

    PushLet实例,可直接运行

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

    Pushlet简单示例测试

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

    网页推送pushlet的demo

    Pushlet是基于Java的一种早期的推送技术框架,它利用了 comet 技术,实现了服务器到客户端的双向通信。在本Demo中,我们将深入探讨Pushlet的工作原理和如何实现一个基本的网页推送系统。 首先,我们需要理解什么是...

    pushlet例子

    【服务器推送技术与Pushlet详解】 服务器推送技术是一种在Web应用中实现实时通信的方法,它与传统的HTTP请求-响应模型不同。在传统的模型中,客户端(浏览器)需要不断地发起请求来获取新数据,而在服务器推送技术...

Global site tag (gtag.js) - Google Analytics