开启WebSocket支持

@Configuration
public class WebSocketConfig {
    @Bean
    public ServerEndpointExporter serverEndpointExporter() {
        return new ServerEndpointExporter();
    }
}

WebSocket配置

//配置消息代理,默认情况下使用内置的消息代理
public interface WebSocketMessageBrokerConfigurer {
 
    // 添加这个Endpoint,这样在网页中就可以通过websocket连接上服务,也就是我们配置websocket的服务地址,并且可以指定是否使用socketjs
    void registerStompEndpoints(StompEndpointRegistry var1);
 
    // 配置发送与接收的消息参数,可以指定消息字节大小,缓存大小,发送超时时间
    void configureWebSocketTransport(WebSocketTransportRegistration var1);
 
    // 设置输入消息通道的线程数,默认线程为1,可以自己自定义线程数,最大线程数,线程存活时间
    void configureClientInboundChannel(ChannelRegistration var1);
 
    // 设置输出消息通道的线程数,默认线程为1,可以自己自定义线程数,最大线程数,线程存活时间
    void configureClientOutboundChannel(ChannelRegistration var1);
 
    // 添加自定义的消息转换器,spring 提供多种默认的消息转换器,返回false,不会添加消息转换器,返回true,会添加默认的消息转换器,当然也可以把自己写的消息转换器添加到转换链中
    boolean configureMessageConverters(List<MessageConverter> var1);
 
    // 配置消息代理,哪种路径的消息会进行代理处理
    void configureMessageBroker(MessageBrokerRegistry var1);
 
    // 自定义控制器方法的参数类型
    void addArgumentResolvers(List<HandlerMethodArgumentResolver> var1);
 
    // 自定义控制器方法返回值类型
    void addReturnValueHandlers(List<HandlerMethodReturnValueHandler> var1);
}

   一般情况下只添加比较重要的即可

// 添加这个Endpoint,这样在网页中就可以通过websocket连接上服务,也就是我们配置websocket的服务地址,并且可以指定是否使用socketjs
void registerStompEndpoints(StompEndpointRegistry var1);

   完整配置如下:

/**
 * 开启WebSocket支持
 * @author 
 * @create 2022/3/16
 */
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {

    @Bean
    public ServerEndpointExporter serverEndpointExporter() {
        return new ServerEndpointExporter();
    }


    /**
     * 添加这个Endpoint,这样在网页中就可以通过websocket连接上服务,也就是我们配置websocket的服务地址,并且可以指定是否使用socketjs
     */
    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        String defaultWebsocketEndpointPath = "/server/*";
        String defaultSockJsEndpointPath = "/server/*";
        /**
         * 看了下源码,它的实现类是WebMvcStompEndpointRegistry,addEndpoint是添加到WebMvcStompWebSocketEndpointRegistration的集合中,所以可以添加多个端点
         * 1、addEndpoint:将 “serviceName/server/*”路径,注册STOMP协议的端点。这个HTTP URL是供WebSocket或SockJS客户端访问的地址,用户连接了这个端点后就可以进行websocket通讯,支持socketJs
         */
        StompWebSocketEndpointRegistration webSockedEndpoint = registry.addEndpoint(defaultWebsocketEndpointPath);
        StompWebSocketEndpointRegistration sockJsEndpoint = registry.addEndpoint(defaultSockJsEndpointPath);
        /**
         * 2、withSockJS()指定端点使用SockJS协议
         */
        sockJsEndpoint.withSockJS();
        /**
         * 3、setAllowedOrigins("*") 添加允许跨域访问
         */
        webSockedEndpoint.setAllowedOrigins("*");
        sockJsEndpoint.setAllowedOrigins("*");
    }
}
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐