pushlet-UserUnicast 浣跨敤鎵嬪唽


pushlet-UserUnicast 鏄竴涓熀浜巔ushlet淇敼鎵╁睍涔嬪悗鐨�JAVA comet瀹炵幇妗嗘灦銆備富瑕佹墿灞曞疄浜�unicast鐐规挱鎺ㄩ€佸姛鑳姐€�

pushlet涓殑 unicast 鏂规硶鍙互瀹炵幇鍚戞寚瀹氫細璇濓紙SessionID锛夋帹閫佹暟鎹紝灏嗘暟鎹帹閫佸埌鎸囧畾鐢ㄦ埛锛屽彲浠ョ敱浜庤 SessionID 鏄殢鏈虹敓鎴愶紝鏃犳硶涓庣敤鎴峰叧鑱旓紝鎵€浠ユ棤娉曟牴鎹笟鍔″瓧娈碉紙濡傜敤鎴稩D锛岀敤鎴峰悕锛夌瓑鎺ㄩ€佺粰鎸囧畾鐢ㄦ埛銆�

鏍稿績瀹炵幇鐗圭偣锛�

璇存槑锛�

娉ㄦ剰锛�

pushlet-userunicast API锛�

瀹㈡埛绔細

鏈嶅姟绔細

鐢ㄦ埛澶氳繛鎺ラ厤缃弬鏁帮細

褰撳涓鎴风杩炴帴鍚屾椂浣跨敤鐩稿悓PL.userId鐢ㄦ埛鏍囪瘑鏃讹紝鍙互閫氳繃 unicast.type 鍙傛暟鐢ㄦ埛澶氳繛鎺ユ帹閫佺被鍨嬶紝unicastUserId(Event, userId)鏂规硶浼氫娇鐢ㄨ鍊间綔涓虹敤鎴峰杩炴帴鎺ㄩ€佹柟寮忋€�

鍦� pushlet.properties 涓彲浠ラ厤缃� unicast.type 鍙傛暟锛屽彲閫夊€间负锛�

pushlet-userunicast 鐢ㄦ埛鎺ㄩ€佷娇鐢ㄦ楠ゅ拰绀轰緥锛�

  1. 涓洪」鐩紩鍏ib涓嬬殑jar鍖咃細
    pushlet-userunicast.jar
    log4j.jar

  2. 鍦� src 鎴� WEB-INF 涓姞鍏esource涓嬬殑閰嶇疆鏂囦欢锛�
    log4j.properties
    pushlet.properties
    sources.properties

  3. 鍦ㄩ渶瑕佽闃呬簨浠剁殑 Web 椤圭洰涓姞鍏lient涓嬬殑瀹㈡埛绔疛S鏂囦欢锛�
    ajax-pushlet-client.js

  4. 鍦� 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>
  5. 瀹㈡埛绔闃呮帴鏀舵秷鎭� 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>
  6. 鏈嶅姟鍣ㄧ鎺ㄩ€佹暟鎹殑娴嬭瘯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>
  7. 璋冪敤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