需要实现继承重写两个类,一个是类是TextWebSocketHandler,一个是HttpSessionHandshakeInterceptor,后面的那个是对前面的那个hander的连接方法的处理。
xmk中配置如下:
<bean id="websocket1" class="com.ha.websocket.WebsocketEndPoint"/>
<websocket:handlers>
<!-- path表示对应的连接 -->
<websocket:mapping path="/websocket.json" handler="websocket1"/>
<websocket:handshake-interceptors>
<!-- 这个class是连接的流程控制方法,这个重写HttpSessionHandshakeInterceptor的方法-->
<bean class="com.ha.websocket.HandshakeInterceptor"/>
</websocket:handshake-interceptors>
<!-- 配 置这个为sockjs连接-->
<websocket:sockjs />
</websocket:handlers>
<!-- 这个是websocket的配置,如果用websocket是ws的连接js连接-->
<websocket:handlers>
<websocket:mapping path="/ws/websocket.json" handler="websocket1"/>
<websocket:handshake-interceptors>
<bean class="com.ha.websocket.HandshakeInterceptor"/>
</websocket:handshake-interceptors>
</websocket:handlers>
js如何连接如下:
<script src="js/sockjs-0.3.min.js"></script>
<script>
var websocket;
if ('WebSocket' in window) {
websocket = new WebSocket("ws://localhost:8080/sForm/ws/websocket.json");
} else if ('MozWebSocket' in window) {
websocket = new MozWebSocket("ws://localhost:8080/sForm/ws/websocket.json");
} else {
websocket = new SockJS("http://localhost:8080/sForm/websocket.json");
}
websocket.onopen = function (evnt) {
console.log("it is start open");
console.log('send start ');
websocket.send('send a message ');
};
websocket.onmessage = function (event){
alert("received data is "+event.data);
};
websocket.onclose = function (event) {
console.log('Info: connection closed.');
console.log(event);
alert("it is time close");
};
</script>
这样就好了。