websocket实例1-基于xml

<!DOCTYPE html>
<html>
<head>
<title>WebSockete Demo</title>
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="this is my page">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">

<!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
<script type="text/javascript">
	//验证浏览器是否支持WebSocket协议  
	if (!window.WebSocket) {
		alert("WebSockeet not supported by this browser!");
	}
	var ws;
	function display() {
		ws = new WebSocket("ws://localhost:8080/examplesXml/websocket");
		//监听消息  
		ws.onmessage = function(event) {
			log(event.data);
		}

		//关闭WebSocket  
		ws.onclose = function(event) {
		}
		//打开WebSocket  
		ws.onopen = function(event) {
			ws.send("Hello,Server");
		}
		ws.onerror = function(event) {
		}
	}
	var log = function(s) {
		if (document.readyState !== "complete") {
			log.buffer.pust(s);
		} else {
			document.getElementById("contendId").innerHTML += (s + "\n");
		}
	}
	function sendMsg() {
		var msg = document.getElementById("messageId");
		ws.send(msg.value);
	}
</script>
</head>

<body onload="display();">
	<div id="valueLabel"></div>
	<textarea rows="20" cols="30" id="contendId"></textarea>
	<br />
	<input name="message" id="messageId" />
	<button id="sendButton" onClick="javascript:sendMsg()">Send</button>
</body>
</html>

 客户端代码-新建index.html,代码如上。

package cn.jess.websocket;  
  
import java.io.IOException;  
import java.nio.ByteBuffer;  
import java.nio.CharBuffer;  
import java.util.ArrayList;  
import java.util.List;  
  
import javax.servlet.http.HttpServletRequest;  
  
import org.apache.catalina.websocket.MessageInbound;  
import org.apache.catalina.websocket.StreamInbound;  
import org.apache.catalina.websocket.WebSocketServlet;  
import org.apache.catalina.websocket.WsOutbound;  
  
public class EchoServlet extends WebSocketServlet {  
    /** 
     *  
     */  
    private static final long serialVersionUID = -2581942001009336822L;  
    //private static final Logger log = Logger.getLogger("EchoServlet");  
    private static List<MessageInbound> socketList = new ArrayList<MessageInbound>();  
//  privat static final long ser  
      
    private static List<WebSocketMessageInbound> connsList = new ArrayList<WebSocketMessageInbound>();  
      
    protected StreamInbound createWebSocketInbound(String subProtocol,HttpServletRequest request){  
          
        return new WebSocketMessageInbound();  
    }  
      
    public class WebSocketMessageInbound extends MessageInbound{  
        protected void onClose(int status){  
            super.onClose(status);  
            socketList.remove(this);              
        }  
        protected void onOpen(WsOutbound outbound){  
            super.onOpen(outbound);  
            socketList.add(this);  
        }  
        //@Override  
        protected void onBinaryMessage(ByteBuffer message) throws IOException {  
            // TODO Auto-generated method stub  
            System.out.println("onBinarymessage");  
        }  
        @Override  
        protected void onTextMessage(CharBuffer message) throws IOException {  
            // TODO Auto-generated method stub  
            for(MessageInbound messageInbound : socketList){  
                CharBuffer buffer = CharBuffer.wrap(message);  
                WsOutbound outbound = messageInbound.getWsOutbound();  
                outbound.writeTextMessage(buffer);  
                outbound.flush();                 
            }  
        }  
    }  
}  

以上是服务器端的代码。

<?xml version="1.0" encoding="UTF-8"?>  
<web-app version="2.5"   
xmlns="http://java.sun.com/xml/ns/javaee"   
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  
  <display-name></display-name>  
  <welcome-file-list>  
    <welcome-file>index.jsp</welcome-file>  
  </welcome-file-list>    
  <servlet>  
<servlet-name>websocket</servlet-name>  
<servlet-class>cn.jess.websocket.EchoServlet</servlet-class>  
<load-on-startup>1</load-on-startup>  
</servlet>  
<servlet-mapping>    
        <servlet-name>websocket</servlet-name>    
        <url-pattern>/websocket</url-pattern>    
    </servlet-mapping>  
</web-app>  

 web.xml文件的配置。

猜你喜欢

转载自forsave.iteye.com/blog/2288263