⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 session.java

📁 Java下Comet的实现框架Pushlet例子。 实现实时推送数据到客户端。 服务器每隔30-500MS产生一个随机数
💻 JAVA
字号:
// Copyright (c) 2000 Just Objects B.V. <just@justobjects.nl>// Distributable under LGPL license. See terms of license at gnu.org.package nl.justobjects.pushlet.core;import nl.justobjects.pushlet.util.Log;import nl.justobjects.pushlet.util.PushletException;/** * Represents client pushlet session state. * * @author Just van den Broecke - Just Objects &copy; * @version $Id: Session.java,v 1.8 2007/11/23 14:33:07 justb Exp $ */public class Session implements Protocol, ConfigDefs {	private Controller controller;	private Subscriber subscriber;	private String userAgent;	private long LEASE_TIME_MILLIS = Config.getLongProperty(SESSION_TIMEOUT_MINS) * 60 * 1000;	private volatile long timeToLive = LEASE_TIME_MILLIS;	public static String[] FORCED_PULL_AGENTS = Config.getProperty(LISTEN_FORCE_PULL_AGENTS).split(",");	private String address = "unknown";	private String format = FORMAT_XML;	private String id;	/**	 * Protected constructor as we create through factory method.	 */	protected Session() {	}	/**	 * Create instance through factory method.	 *	 * @param anId a session id	 * @return a Session object (or derived)	 * @throws PushletException exception, usually misconfiguration	 */	public static Session create(String anId) throws PushletException {		Session session;		try {			session = (Session) Config.getClass(SESSION_CLASS, "nl.justobjects.pushlet.core.Session").newInstance();		} catch (Throwable t) {			throw new PushletException("Cannot instantiate Session from config", t);		}		// Init session		session.id = anId;		session.controller = Controller.create(session);		session.subscriber = Subscriber.create(session);		return session;	}	/**	 * Return (remote) Subscriber client's IP address.	 */	public String getAddress() {		return address;	}	/**	 * Return command controller.	 */	public Controller getController() {		return controller;	}	/**	 * Return Event format to send to client.	 */	public String getFormat() {		return format;	}	/**	 * Return (remote) Subscriber client's unique id.	 */	public String getId() {		return id;	}	/**	 * Return subscriber.	 */	public Subscriber getSubscriber() {		return subscriber;	}	/**	 * Return remote HTTP User-Agent.	 */	public String getUserAgent() {		return userAgent;	}	/**	 * Set address.	 */	protected void setAddress(String anAddress) {		address = anAddress;	}	/**	 * Set event format to encode.	 */	protected void setFormat(String aFormat) {		format = aFormat;	}	/**	 * Set client HTTP UserAgent.	 */	public void setUserAgent(String aUserAgent) {		userAgent = aUserAgent;	}	/**	 * Decrease time to live.	 */	public void age(long aDeltaMillis) {		timeToLive -= aDeltaMillis;	}	/**	 * Has session timed out?	 */	public boolean isExpired() {		return timeToLive <= 0;	}	/**	 * Keep alive by resetting TTL.	 */	public void kick() {		timeToLive = LEASE_TIME_MILLIS;	}	public void start() {		SessionManager.getInstance().addSession(this);	}	public void stop() {		subscriber.stop();		SessionManager.getInstance().removeSession(this);	}	/**	 * Info.	 */	public void info(String s) {		Log.info("S-" + this + ": " + s);	}	/**	 * Exceptional print util.	 */	public void warn(String s) {		Log.warn("S-" + this + ": " + s);	}	/**	 * Exceptional print util.	 */	public void debug(String s) {		Log.debug("S-" + this + ": " + s);	}	public String toString() {		return getAddress() + "[" + getId() + "]";	}}/* * $Log: Session.java,v $ * Revision 1.8  2007/11/23 14:33:07  justb * core classes now configurable through factory * * Revision 1.7  2005/02/28 15:58:05  justb * added SimpleListener example * * Revision 1.6  2005/02/28 12:45:59  justb * introduced Command class * * Revision 1.5  2005/02/28 09:14:55  justb * sessmgr/dispatcher factory/singleton support * * Revision 1.4  2005/02/25 15:13:01  justb * session id generation more robust * * Revision 1.3  2005/02/21 16:59:08  justb * SessionManager and session lease introduced * * Revision 1.2  2005/02/21 12:32:28  justb * fixed publish event in Controller * * Revision 1.1  2005/02/21 11:50:46  justb * ohase1 of refactoring Subscriber into Session/Controller/Subscriber * * */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -