spring boot中使用web socket显示实时消息

一、在spring boot中使用web socket进行实时消息显示
二、pom.xml中的依赖

<!-- spring boot 中web socket服务依赖 -->
<dependency>  
    <groupId>org.springframework.boot</groupId>  
    <artifactId>spring-boot-starter-websocket</artifactId>  
</dependency>

三、自定义一个web socket映射配置,使用@Configuration和@EnableWebSocket注解,并且实现WebSocketConfigurer接口;

/**
 * @ClassName: MonitorWebSocketConfiguration.java
 * @Description: web socket自定义配置;
 * @author wangmin
 * @date 2018年6月5日-上午9:48:58
 * @version 1.0V
 */
@Configuration
@EnableWebSocket
public class MonitorWebSocketConfiguration implements WebSocketConfigurer {

    @Override
    public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
        registry.addHandler(webSocketHandler(), "/web")//请求地址
            .setAllowedOrigins("*")
            .addInterceptors(new MonitorWebSocketInterceptor());
    }

    @Bean
    public WebSocketHandler webSocketHandler () {
        return new WebSocketController();
    }

}

四、请求拦截器实现HandshakeInterceptor接口;

/**
 * @ClassName: MonitorWebSocketInterceptor.java
 * @Description: web socket请求拦截器实现;
 * @author wangmin
 * @date 2018年6月5日-上午9:52:28
 * @version 1.0V
 */
public class MonitorWebSocketInterceptor implements HandshakeInterceptor {

    @Override
    public boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler,
            Map<String, Object> attributes) throws Exception {
        if (request instanceof ServletServerHttpRequest) {
            ServletServerHttpRequest servletServerHttpRequest = (ServletServerHttpRequest)request;
            attributes.put("WEBSOCKET_USERID", servletServerHttpRequest.getServletRequest().getSession().getId());
            attributes.put("USER_SESSION", servletServerHttpRequest.getServletRequest().getSession());
            return true;
        } else {
            return false;
        }
    }

    @Override
    public void afterHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler,
            Exception exception) {

    }
}

五、web socket请求的controller要继承TextWebSocketHandler类;

/**
 * @ClassName: WebSocketController.java
 * @Description: web socket请求controller;
 * @author wangmin
 * @date 2018年6月5日-上午9:56:10
 * @version 1.0V
 */
public class WebSocketController extends TextWebSocketHandler {

    /**
     * 请求发送消息的时候,调用该方法;
     */
    @Override
    protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
        //  获取web socket发送过来的消息
        String msg = message.getPayload();
        //  服务端返回消息操作
        session.sendMessage(new TextMessage("服务端返回消息"));
    }
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王盖茨666

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值