读书人

Tomcat7.0.42对WebSocket的支持,该怎么

发布时间: 2013-08-10 21:14:06 作者: rapoo

Tomcat7.0.42对WebSocket的支持
看了网上websocket的例子,为什么一直调不通呢.
index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Index</title>

<script type="text/javascript">
var ws = null;
function startWebSocket() {
if ('WebSocket' in window)
ws = new WebSocket('ws://109.123.112.65:8080/TestWeb/Test');
else if ('MozWebSocket' in window)
ws = new MozWebSocket("ws://109.123.112.65:8080/TestWeb/Test");
else
alert("not support");


ws.onmessage = function(evt) {
alert(evt.data);
};

ws.onclose = function(evt) {
alert("close");
};

ws.onopen = function(evt) {
alert("open");
};
}

function sendMsg() {
ws.send(document.getElementById('writeMsg').value);
}
</script>
</head>
<body onload="startWebSocket();">
<input type="text" id="writeMsg"></input>
<input type="button" value="send" onclick="sendMsg()"></input>
</body>
</html>


Test.java源码

import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.CharBuffer;

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;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

/**
* Servlet implementation class Test
*/


public class Test extends WebSocketServlet {

private static final long serialVersionUID = 1L;
private Log log = LogFactory.getLog(getClass());

@Override
protected StreamInbound createWebSocketInbound(String arg0, HttpServletRequest arg1) {

log.info("======================");
return new MessageInbound() {

@Override
protected void onTextMessage(CharBuffer charBuffer) throws IOException {

log.info("get message from client:"+charBuffer);
WsOutbound out=this.getWsOutbound();
CharBuffer buffer=CharBuffer.wrap("I'am server,I recevied yourmessage:"+charBuffer);
out.writeTextMessage(buffer);
out.flush();


}

@Override
protected void onBinaryMessage(ByteBuffer arg0) throws IOException {
// TODO Auto-generated method stub

}
};
}


}




为什么运行没有反应呢,直接alert("close");
求解答
------解决方案--------------------


LZ浏览器是 ?
[解决办法]
类前面加上注解@WebServlet("/Test")
[解决办法]
https://github.com/1d7500/trunk/tree/master/example/websocketexample
刚上传的例子 LZ请趁热

读书人网 >J2EE开发

热点推荐