pushlet-UserUnicast 鏄竴涓熀浜巔ushlet淇敼鎵╁睍涔嬪悗鐨�JAVA comet
瀹炵幇妗嗘灦銆備富瑕佹墿灞曞疄浜�unicast
鐐规挱鎺ㄩ€佸姛鑳姐€�
pushlet涓殑
unicast
鏂规硶鍙互瀹炵幇鍚戞寚瀹氫細璇濓紙SessionID
锛夋帹閫佹暟鎹紝灏嗘暟鎹帹閫佸埌鎸囧畾鐢ㄦ埛锛屽彲浠ョ敱浜庤SessionID
鏄殢鏈虹敓鎴愶紝鏃犳硶涓庣敤鎴峰叧鑱旓紝鎵€浠ユ棤娉曟牴鎹笟鍔″瓧娈碉紙濡傜敤鎴稩D锛岀敤鎴峰悕锛夌瓑鎺ㄩ€佺粰鎸囧畾鐢ㄦ埛銆�
鏍稿績瀹炵幇鐗圭偣锛�
all
, first
, last
涓夌绫诲瀷鍒囨崲Event
杩涜setField()
鏃舵棤闇€杞崲瀛楃缂栫爜璇存槑锛�
闃呰鏈枃妗c€佷娇鐢� pushlet-UserUnicast锛岄渶瑕佹帉鎻� pushlet 鍩虹锛屼簡瑙� pushlet unicast 鐨勪笉瓒�
鏈枃妗d粎鍖呮嫭锛氬浣曞埄鐢� pushlet-UserUnicast 瀹炵幇瀵规寚瀹氱敤鎴风偣鎾暟鎹�
鏈枃妗d笉鍖呮嫭锛歱ushlet鐨勪粙缁嶃€乸ushlet浣跨敤鏂规硶銆乸ushlet鐨凙PI銆傚闇€浜嗚В锛岃鏌ラ槄鍏朵粬鏂囨。銆�
娉ㄦ剰锛�
first
鍜�last
鎺ㄩ€佸苟闈炴槸缁濆绮剧‘鐨勩€傝繖鏄洜涓猴細鐢ㄦ埛鏂紑鍚庯紝骞朵笉鑳界珛鍗虫娴嬪埌骞朵粠闃熷垪绉婚櫎鐢ㄦ埛锛堟湁涓€瀹氭椂闂村樊锛夛紝鎵€浠ュ鏋滃湪鏌愪釜鐢ㄦ埛鏂紑杩炴帴鍚庯紝绔嬪嵆杩涜first
鎴�last
鎺ㄩ€侊紝鍙兘浼氭帹閫佺粰宸叉柇寮€鐨勭敤鎴枫€備絾鍦ㄦ椂闂村樊鍏佽鑼冨洿鍐呮槸瀹夊叏鐨勶紝鑰�all
鏂瑰紡鎺ㄩ€佹椂缁濆瀹夊叏鐨勩€�PL.userId = "userId"
锛�PL.userId
灞炴€ф寚瀹氬鎴风鐨勫瓧绗︿覆鏍囪瘑锛屾湇鍔″櫒绔牴鎹鏍囪瘑鎺ㄩ€佹暟鎹埌璇ュ鎴风銆傚湪 PL._init();
鍚庝娇鐢ㄣ€備緥濡傦細PL._init();
PL.userId="JAY";
Dispatcher.getInstance().unicastUserId(Event, userId);
锛氭帹閫佹暟鎹埌鎸囧畾鐢ㄦ埛鏍囪瘑鐨勫鎴风銆�
Event
锛� 鍙戝竷鐨勪簨浠跺璞″拰鏁版嵁userId
锛� 鐢ㄦ埛鏍囪瘑锛屽搴斿鎴风鎸囧畾鐨� PL.userId
String userId="JAY";
//unicastUserId 鎺ㄩ€佺粰鎸囧畾鐢ㄦ埛
Dispatcher.getInstance().unicastUserId(event, userId);
Dispatcher.getInstance().unicastUserId(Event, userId, unicastType);
锛氭寜鐓nicastType鎸囧畾鐨勭敤鎴峰杩炴帴鎺ㄩ€佺被鍨嬶紝鎺ㄩ€佹暟鎹埌鎸囧畾鐢ㄦ埛鏍囪瘑鐨勫鎴风銆�
Event
锛� 鍙戝竷鐨勪簨浠跺璞″拰鏁版嵁userId
锛� 鐢ㄦ埛鏍囪瘑锛屽搴斿鎴风鎸囧畾鐨� PL.userId
unicastType
锛� 鐢ㄦ埛澶氳繛鎺ユ帹閫佺被鍨嬶紝鍙€夊€间负 all
, first
, last
锛堜綔鐢ㄥ弬瑙侊細鐢ㄦ埛澶氳繛鎺ラ厤缃弬鏁帮級銆傚彲浣跨敤甯搁噺琛ㄧず锛�Sys.USERUNICAST_ALL
, Sys.USERUNICAST_First
, Sys.USERUNICAST_Last
String userId="JAY";
//unicastUserId 鎺ㄩ€佺粰鎸囧畾鐢ㄦ埛鐨勬墍鏈夎繛鎺�
Dispatcher.getInstance().unicastUserId(event, userId, "all");
褰撳涓鎴风杩炴帴鍚屾椂浣跨敤鐩稿悓PL.userId
鐢ㄦ埛鏍囪瘑鏃讹紝鍙互閫氳繃 unicast.type
鍙傛暟鐢ㄦ埛澶氳繛鎺ユ帹閫佺被鍨嬶紝unicastUserId(Event, userId)
鏂规硶浼氫娇鐢ㄨ鍊间綔涓虹敤鎴峰杩炴帴鎺ㄩ€佹柟寮忋€�
鍦� pushlet.properties
涓彲浠ラ厤缃� unicast.type
鍙傛暟锛屽彲閫夊€间负锛�
all
锛� 榛樿鍊硷紝鍚屼竴涓敤鎴峰瓨鍦ㄥ涓鎴风杩炴帴鏃讹紝鍚戝叏閮ㄥ鎴风杩炴帴閮芥帹閫佹秷鎭€�first
锛� 浠呭悜鏈€鍏堣姹傝繛鎺ョ殑瀹㈡埛绔帹閫佹秷鎭紝鍚庤繛鎺ョ殑瀹㈡埛绔棤娉曟帴鏀跺埌娑堟伅锛堝綋娌℃湁鍏朵粬鍚屽悕鐢ㄦ埛杩炴帴鏃讹紝鎵嶅姞鍏ユ帹閫侊紝宸叉湁鐢ㄦ埛杩炴帴锛屽悗杩炴帴鐢ㄦ埛涓嶆帹閫侊級銆�last
锛� 浠呭悜鏈€鍚庤姹傝繛鎺ョ殑瀹㈡埛绔帹娑堟伅銆�涓洪」鐩紩鍏ib涓嬬殑jar鍖咃細
pushlet-userunicast.jar
log4j.jar
鍦� src
鎴� WEB-INF
涓姞鍏esource涓嬬殑閰嶇疆鏂囦欢锛�
log4j.properties
pushlet.properties
sources.properties
鍦ㄩ渶瑕佽闃呬簨浠剁殑 Web 椤圭洰涓姞鍏lient涓嬬殑瀹㈡埛绔疛S鏂囦欢锛�
ajax-pushlet-client.js
鍦� web.xml
閰嶇疆 pushlet
鏍稿績Servlet鎺у埗鍣�
<servlet>
<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>
瀹㈡埛绔闃呮帴鏀舵秷鎭� index.jsp
浣跨敤PL.userId
灞炴€ф寚瀹氬鎴风鐨勫瓧绗︿覆鏍囪瘑锛屾湇鍔″櫒绔牴鎹鏍囪瘑鎺ㄩ€佹暟鎹埌璇ュ鎴风
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>鐢ㄦ埛鎺ユ敹娑堟伅椤甸潰</title>
<script type="text/javascript" src="js/ajax-pushlet-client.js"></script>
<script type="text/javascript">
PL._init();
PL.userId = "JAY";
PL.joinListen('/push/hello');
function onData(event) {
//console.info(event.get("msg"));
document.getElementById("msg").innerHTML = document
.getElementById("msg").innerHTML
+ event.get("msg") + "<br/>";
}
</script>
</head>
<body>
<div id="msg"></div>
<br />
<br />
<br />
<a href="publish.jsp" target="_blank">鍚庡彴鎺ㄩ€佹秷鎭〉闈�</a>
</body>
</html>
鏈嶅姟鍣ㄧ鎺ㄩ€佹暟鎹殑娴嬭瘯Servlet
浣跨敤 Dispatcher.getInstance().unicastUserId(Event, userId鐢ㄦ埛鏍囪瘑);
鎺ㄩ€佹暟鎹埌鎸囧畾鐢ㄦ埛鏍囪瘑鐨勫鎴风锛�userId鐢ㄦ埛鏍囪瘑
瀵瑰簲 PL.userId
銆�
package servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import nl.justobjects.pushlet.core.Dispatcher;
import nl.justobjects.pushlet.core.Event;
public class MsgPushServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
// 鎺ㄩ€佹秷鎭�
String msg=req.getParameter("msg");
// String userId="JAY";
// 鎺ㄩ€佺敤鎴�
String userId=req.getParameter("userId");
// 鐢ㄦ埛澶氳繛鎺ユ帹閫佹柟寮�
String type=req.getParameter("type");
// 浜嬩欢瀵硅薄鍜屾暟鎹�
Event event = Event.createDataEvent("/push/hello");
event.setField("msg", msg); //涓枃鏃犻渶杞崲涓篒SO-8859-1
// 鏍规嵁pushlet.properties鐨剈nicast.type鍙傛暟鍊兼帹閫佺粰鎸囧畾鐢ㄦ埛
// Dispatcher.getInstance().unicastUserId(event,userId);
// 鏍规嵁鎸囧畾type绫诲瀷鎺ㄩ€佺粰鎸囧畾鐢ㄦ埛
Dispatcher.getInstance().unicastUserId(event, userId, type);
}
}
web.xml鐨剆ervlet閰嶇疆
<servlet>
<servlet-name>MsgPushServlet</servlet-name>
<servlet-class>servlet.MsgPushServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MsgPushServlet</servlet-name>
<url-pattern>/servlet/MsgPushServlet</url-pattern>
</servlet-mapping>
璋冪敤Servlet锛屽彂甯冩帹閫佹秷鎭殑椤甸潰 publish.jsp
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>鍙戝竷鎺ㄩ€佹秷鎭�</title>
</head>
<body>
<h1>鍙戝竷闇€瑕佹帹閫佺殑淇℃伅锛�</h1>
<form action="servlet/MsgPushServlet" method="post" target="pushFrame">
<p>
鎺ㄩ€佺殑鐢ㄦ埛userId锛�<input type="text" name="userId" value="JAY" />
</p>
<p>
鎺ㄩ€佸唴瀹癸細<input type="text" name="msg" >
</p>
<p>
鎺ㄩ€佺被鍨嬶細
<input type="radio" name="type" id="all" value="all" checked="checked">
<label for="all">ALL锛堟墍鏈夎繛鎺ワ級</label>
<input type="radio" name="type" id="first" value="first">
<label for="first">FIRST 锛堢涓€涓繛鎺ワ級</label>
<input type="radio" name="type" id="last" value="last">
<label for="last">LAST 锛堟渶鍚庝竴涓繛鎺ワ級</label>
</p>
<input type="submit" value="鍙戝竷鎺ㄩ€�">
</form>
<iframe name="pushFrame" style="display: none;"></iframe>
</body>
</html>
濡傛灉鎮ㄦ湁鏇村ソ鎰忚锛屽缓璁垨鎯虫硶锛岃鑱旂郴鎴戙€�
鑱旂郴銆佸弽棣堛€佸畾鍒躲€佸煿璁� Email锛�inthinkcolor@gmail.com