基于spring4 的websocket 简单示例

来源:互联网 发布:网络公关媒体 编辑:程序博客网 时间:2024/06/16 19:37

1.需要的类库基于maven配置

<!-- websocket -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-websocket</artifactId>
<version>4.2.0.RELEASE</version>
</dependency>  
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-messaging</artifactId>
<version>4.2.0.RELEASE</version>
</dependency>

2.websocket服务端处理器
<pre name="code" class="java">package com.sky.springmvc.websockets;import org.springframework.web.socket.TextMessage;import org.springframework.web.socket.WebSocketSession;import org.springframework.web.socket.handler.TextWebSocketHandler;/** * websocket 处理器 * @author 孙效宁 * */public class WebsocketEndPoint extends TextWebSocketHandler{@Overrideprotected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {super.handleTextMessage(session, message);TextMessage textMessage = new TextMessage(message.getPayload()+" received at server");System.err.println("message:"+message.getPayload());// 将客户端发送的信息原样输出session.sendMessage(textMessage);}}


3.自定义握手接口(可选,如果有的话在配置的时候要加上,配置见4)

package com.sky.springmvc.websockets;import org.springframework.web.socket.TextMessage;import org.springframework.web.socket.WebSocketSession;import org.springframework.web.socket.handler.TextWebSocketHandler;/** * websocket 处理器 * @author 孙效宁 * */public class WebsocketEndPoint extends TextWebSocketHandler{@Overrideprotected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {super.handleTextMessage(session, message);TextMessage textMessage = new TextMessage(message.getPayload()+" received at server");// 输出客户端发送的消息
System.err.println("message:"+message.getPayload());// 将客户端发送的信息原样输出session.sendMessage(textMessage);}<p>}</p>

4.服务端处理器和握手接口配置

package com.sky.springmvc.websockets;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.web.socket.WebSocketHandler;import org.springframework.web.socket.config.annotation.EnableWebSocket;import org.springframework.web.socket.config.annotation.WebSocketConfigurer;import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry;/** * websocket 配置 * @author 孙效宁 * */@Configuration@EnableWebSocketpublic class WebSocketConfig implements WebSocketConfigurer {    @Override    public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {        registry.addHandler(myHandler(), "/myHandler")        .addInterceptors(new HandshakeInterceptor())        .setAllowedOrigins("*").withSockJS();    }    @Bean    public WebSocketHandler myHandler() {        return new WebsocketEndPoint();    }<p>}</p>

5.springmvc 配置文件记得加上注解扫描

 <!-- 注解扫描器 --> <context:component-scan base-package="com.sky.springmvc"/>

6.客户端页面

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><html><head><title>hello</title><script src="http://cdn.sockjs.org/sockjs-0.3.min.js">    </script>    <script>   var sock = new SockJS('http://localhost:8080/springmvc/myHandler');   sock.onopen = function() {       console.log('open');       // 给服务端发送简单文本消息       sock.send("test");   };    sock.onmessage = function(e) {       console.log('message', e.data);   };   sock.onclose = function() {       console.log('close');   };</script></head><body></body></html>




0 0