当前位置: 代码迷 >> Web前端 >> 基于html5的WebSocket施用方式。承接jetty配置
  详细解决方案

基于html5的WebSocket施用方式。承接jetty配置

热度:323   发布时间:2012-11-15 15:16:14.0
基于html5的WebSocket使用方式。承接jetty配置

html5学习总结:

?

创建类:WebSearchServlet.java

package org.search.servlet;

import javax.servlet.http.HttpServletRequest;

import org.eclipse.jetty.websocket.WebSocket;
import org.eclipse.jetty.websocket.WebSocketServlet;

public class WebSearchServlet extends WebSocketServlet{

	/**
	 * 
	 */
	private static final long serialVersionUID = 5136484809757218548L;

	public WebSocket doWebSocketConnect(HttpServletRequest arg0, String arg1) {
		return new SearchServlet();
	}
}

?

创建类:SearchServlet.java

package org.search.servlet;

import org.eclipse.jetty.websocket.WebSocket;

public class SearchServlet implements WebSocket{

	public void onClose(int arg0, String arg1) {
		System.out.println("onClose");
	}

	public void onOpen(final Connection conn) {
		System.out.println("onOpen");
		 new Thread() {
             @Override
             public void run() {
                 try {
                	 conn.sendMessage("sdfsdf");
                	 int i =0;
                     while (true) {
                         sleep(1000);
                         conn.sendMessage("Count:" + (i++));
                     }
                 } catch (final Exception e) {
                     System.err.println(e.getMessage());
                 }
             }
         }.start();
	}

}

?

在JSP目录下新建文件comet.html内容如下:

<html> 
    <head> 
        <title>WebSoket Demo</title> 
        <script type="text/javascript"> 
            if (!window.WebSocket) { 
                alert("WebSocket not supported by this browser!"); 
            } 
             
            function display() { 
                var valueLabel = document.getElementById("valueLabel"); 
                valueLabel.innerHTML = ""; 
                var ws = new WebSocket("ws://localhost:9999/comet.do"); 
                ws.onmessage = function(evt) { 
                    valueLabel.innerHTML = evt.data; 
                }; 

                ws.onclose = function() { 
                }; 

                ws.onopen = function() { 
                    ws.send("Hello, Server!"); 
                }; 
                
            } 
        </script> 
    </head> 
    <body onload="display();"> 
        <div id="valueLabel"></div> 
    </body> 
</html>

?

运行jetty.访问地址http://localhost:9999/comet.html效果如下:

?

1 楼 limingnihao 2011-08-04  
没看懂啊。楼主,威慑呢么用jetty,tomcat支持么。
2 楼 hsys 2011-09-08  
哥们,你这个导入了哪些包?  我用Tomcat做web容器,导入jetty的一些包,总是报错,java.lang.NullPointerException
at org.eclipse.jetty.websocket.WebSocketFactory.upgrade(WebSocketFactory.java:106)
at org.eclipse.jetty.websocket.WebSocketServlet.service(WebSocketServlet.java:77)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
at java.lang.Thread.run(Thread.java:619)