基于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效果如下:
?
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)