美文网首页JAVA开发🌺程序小🐒子
spring整合websocket开发(服务器端)

spring整合websocket开发(服务器端)

作者: 写java的逗比叫z1 | 来源:发表于2016-12-02 06:29 被阅读1247次
  1. websocket开发基于web 3.0以上, 要求tomcat 8 , java 7 版本以上, 在项目中修改web版本
  2. 导入jar包
        <!-- https://mvnrepository.com/artifact/org.springframework/spring-websocket -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-websocket</artifactId>
            <version>4.3.3.RELEASE</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.springframework/spring-messaging -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-messaging</artifactId>
            <version>4.3.3.RELEASE</version>
        </dependency>
  1. 配置spring配置文件
    <!-- 扫描组件 -->
    <context:component-scan base-package="chatroom.web" />
    <!-- 配置注解版本的 spring-mvc -->
    <mvc:annotation-driven />
        <!-- 配置websocket握手 -->
    <websocket:handlers>
        <websocket:mapping handler="websocket" path="/websocket"/>
        <websocket:handshake-interceptors>
            <bean class="chatroom.web.websocket.HandshakeInterceptor"/>
        </websocket:handshake-interceptors>
    </websocket:handlers>
  1. 服务器代码
package chatroom.web.websocket;

import java.util.Map;

import org.springframework.http.server.ServerHttpRequest;
import org.springframework.http.server.ServerHttpResponse;
import org.springframework.web.socket.WebSocketHandler;
import org.springframework.web.socket.server.support.HttpSessionHandshakeInterceptor;

/**
 * 处理socket握手
 * @author zhang
 *
 */
public class HandshakeInterceptor extends HttpSessionHandshakeInterceptor {
    @Override
    public boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler handler,
            Map<String, Object> attributes) throws Exception {
        System.out.println("before handshake");
        return super.beforeHandshake(request, response, handler, attributes);
    }

    @Override
    public void afterHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler,
            Exception ex) {
        System.out.println("after handshake");
        super.afterHandshake(request, response, wsHandler, ex);
    }

}
package chatroom.web.websocket;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.socket.TextMessage;
import org.springframework.web.socket.WebSocketSession;
import org.springframework.web.socket.handler.TextWebSocketHandler;

/**
 * 消息处理控制器
 * @author zhang
 *
 */
@Controller("websocket")
@RequestMapping("websocket")
public class WebSocketHandler extends TextWebSocketHandler {
    @Override
    protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
        super.handleTextMessage(session, message);
        TextMessage returnMessage = new TextMessage(message.getPayload() + " recieved at server");
        session.sendMessage(returnMessage);
    }
}

相关文章

网友评论

    本文标题:spring整合websocket开发(服务器端)

    本文链接:https://www.haomeiwen.com/subject/lwhfmttx.html