`

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 jar包下载

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

    pushlet

    pushlet开发与应用

    pushlet白皮书

    pushlet白皮书pushlet白皮书pushlet白皮书pushlet白皮书pushlet白皮书

    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简单配置应用

    pushlet配置应用实例,看了之后就能简单应用pushlet实时推送数据

    Pushlet白皮书

    6.1.1.场景:事件订阅 (Scenario: Event Subscription) 20 6.1.2.场景:发送和派分事件Scenario: Sending and Dispatching Events 22 6.2.客户端框架 Client-side framework 24 7.应用(Applications) 27 7.1. 监控...

    pushlet-sessionid.jar ajax-pushlet-client.js pushlet.properties

    pushlet 所需夹包 和配置文件 ajax-pushlet-client.js pushlet-sessionid.jar sources.properties pushlet.properties

    Pushlet简单示例测试

    Pushlet简单示例测试

    pushlet例子

    pushlet例子,Pushlet 是一个开源的 Comet 框架,Pushlet 使用了观察者模式:客户端发送请求,订阅感兴趣的事件;服务器端为每个客户端分配一个会话 ID 作为标记,事件源会把新产生的事件以多播的方式发送到订阅者的...

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

    实现通过pushlet,进行点对点聊天功能。 包括: 在线用户上线的通知 离线的通知 来新消息时的通知 前台使用Ext ,后台使用pushlet /pushlet/WebRoot/index.jsp 页面主要包含几个部分。 Ext.PUSHLET_URL='...

    pushlet文档和项目

    pushlet文档和项目

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

    实现通过pushlet,进行点对点聊天功能。 包括: 在线用户上线的通知 离线的通知 来新消息时的通知 前台使用Ext ,后台使用pushlet /pushlet/WebRoot/index.jsp 页面主要包含几个部分。 Ext.PUSHLET_URL='...

    Pushlet的Ajax-pushlet-client.js分析

    Pushlet的Ajax-pushlet-client.js分析 服务器推技术前台js分析 希望能帮到大家

    服务器推送pushlet讲解

    对comet实现中的pushlet框架进行说明,可以参照该说明进行框架使用

    pushlet实现简单的用户聊天

    容易上手的简单pushlet例子,供大家学习,代码不错,值得下载。

    pushlet 和comet 资料介绍

    pushlet 和comet 资料介绍 介绍如何从服器端push subscrite 给浏览器

    pushlet简单demo,导入即可运行

    pushlet简单demo,导入即可运行 Java 推送 长连接 轮询 pushlet comet4j

    PushLet实例,可直接运行

    pushlet 实例,简单实例,带jar包,可直接运行

    pushlet.jar(2.0.4)

    Pushlet 是一个开源的 Comet 框架,Pushlet 使用了观察者模式:客户端发送请求,订阅感兴趣的事件;服务器端为每个客户端分配一个会话 ID 作为标记,事件源会把新产生的事件以多播的方式发送到订阅者的事件队列里。 ...

    pushlet的笔记

    NULL 博文链接:https://self4j.iteye.com/blog/812303

Global site tag (gtag.js) - Google Analytics