pushlet 之 Pushlet使用手把手例項

weixin_34391854發表於2014-08-14
 
Pushlet(一種comet 架構的實現)是基於Servlet 機制,資料從server端的Java 物件直接推送(push)
到客戶端瀏覽器的(動態)HTML 頁面,而無需任何Java applet 或者外掛的幫助。
  • 在MyEclipse中建立工程。附件包含了從官方下載的Pushlet包已經本次的原始碼包,直接匯入到開發工具即可。
  • 在建立的工程中增加pushlet.jar,log4j.jar。拷貝pushlet.properties,sources.properties到WEB-INF下。
  • 拷貝ajax-pushlet-client.js到WebRoot下。
  • 配置web.xml
Xml程式碼  
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE web-app   
  3.     PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"   
  4.     "http://java.sun.com/dtd/web-app_2_3.dtd">  
  5. <!-- $Id: web.xml,v 1.7 2005/02/21 17:21:49 justb Exp $ -->  
  6. <web-app>  
  7.     <!-- Define the pushlet servlet -->  
  8.     <servlet>  
  9.         <servlet-name>pushlet</servlet-name>  
  10.         <servlet-class>nl.justobjects.pushlet.servlet.Pushlet</servlet-class>  
  11.         <load-on-startup>3</load-on-startup>  
  12.     </servlet>  
  13.     <!-- Define the Servlet Mappings. -->  
  14.     <!-- The pushlet -->  
  15.     <servlet-mapping>  
  16.         <servlet-name>pushlet</servlet-name>  
  17.         <url-pattern>/pushlet.srv</url-pattern>  
  18.     </servlet-mapping>  
  19. </web-app>  
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd">
<!-- $Id: web.xml,v 1.7 2005/02/21 17:21:49 justb Exp $ -->
<web-app>
	<!-- Define the pushlet servlet -->
	<servlet>
		<servlet-name>pushlet</servlet-name>
		<servlet-class>nl.justobjects.pushlet.servlet.Pushlet</servlet-class>
		<load-on-startup>3</load-on-startup>
	</servlet>
	<!-- Define the Servlet Mappings. -->
	<!-- The pushlet -->
	<servlet-mapping>
		<servlet-name>pushlet</servlet-name>
		<url-pattern>/pushlet.srv</url-pattern>
	</servlet-mapping>
</web-app>
  • 後臺程式碼HelloWorldPlushlet.java,該類包含一個內部類
Java程式碼  
  1. package com;   
  2. import nl.justobjects.pushlet.core.Event;   
  3. import nl.justobjects.pushlet.core.EventPullSource;   
  4. public class HelloWorldPlushlet {      
  5.     static public class HwPlushlet extends EventPullSource {   
  6.         // 休眠五秒   
  7.         @Override  
  8.         protected long getSleepTime() {   
  9.             return 5000;   
  10.         }   
  11.         @Override  
  12.         protected Event pullEvent() {   
  13.             Event event = Event.createDataEvent("/cuige/he");   
  14.             event.setField("mess", "hello,world!Plushlet!");   
  15.             return event;   
  16.         }   
  17.     }   
  18. }  
package com;
import nl.justobjects.pushlet.core.Event;
import nl.justobjects.pushlet.core.EventPullSource;
public class HelloWorldPlushlet {	
	static public class HwPlushlet extends EventPullSource {
		// 休眠五秒
		@Override
		protected long getSleepTime() {
			return 5000;
		}
		@Override
		protected Event pullEvent() {
			Event event = Event.createDataEvent("/cuige/he");
			event.setField("mess", "hello,world!Plushlet!");
			return event;
		}
	}
}
  •  sources.properties清理其他,定義自己釋出的內容

 

Java程式碼  
  1. source1=com.HelloWorldPlushlet$HwPlushlet  
source1=com.HelloWorldPlushlet$HwPlushlet
  •  在JSP中呼叫
Jsp程式碼  
  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>   
  2. <html>   
  3.     <head>   
  4.         <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />   
  5.         <meta http-equiv="Pragma" content="no-cache" />   
  6.         <script type="text/javascript" src="ajax-pushlet-client.js"></script>          
  7.         <script type="text/javascript">   
  8.             PL._init();    
  9.             PL.joinListen('/cuige/he');   
  10.             function onData(event) {    
  11.                 alert(event.get("mess"));    
  12.                 // 離開   
  13.                 // PL.leave();   
  14.             }   
  15.         </script>   
  16.     </head>   
  17.     <body>   
  18.         <center>   
  19.         <h1>   
  20.             my first pushlet!   
  21.         </h1>   
  22.         </center>   
  23.     </body>   
  24. </html>  
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		<meta http-equiv="Pragma" content="no-cache" />
		<script type="text/javascript" src="ajax-pushlet-client.js"></script>		
		<script type="text/javascript">
			PL._init(); 
			PL.joinListen('/cuige/he');
			function onData(event) { 
				alert(event.get("mess")); 
				// 離開
				// PL.leave();
			}
		</script>
	</head>
	<body>
		<center>
		<h1>
			my first pushlet!
		</h1>
		</center>
	</body>
</html>

 

  •  將工程部署到Tomcat後訪問,該頁面以五秒鐘一個間隔,收到後臺傳來的資料!

工程部署後如下圖展示

 每次訪問時,後臺都會列印增加到管理中的使用者資訊,當關閉瀏覽器後,伺服器會在超時後自動清理!

相關文章