自学内容网 自学内容网

解决SpringBoot连接Websocket报:请求路径 404 No static resource websocket.

问题发现

最近在工作中用到了WebSocket进行前后端的消息通信,后端代码编写完后,测试一下是否连接成功,发现报No static resource websocket.,看这个错貌似将接口变成了静态资源来访问了,第一时间觉得是端点没有注册成功,示例代码如下:

@EnableWebSocketMessageBroker
@Configurable
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {

    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        registry.addEndpoint("/websocket") // 注册端点
                .addInterceptors(handshakeInterceptor()) // 拦截器
                .setAllowedOrigins("*") // 跨域配置
                .withSockJS() // 启动wockjs支持
                .setHeartbeatTime(5000) // 设置心跳时间 5s
        ;
    }

    @Override
    public void configureMessageBroker(MessageBrokerRegistry registry) {
        //指定了消息代理的目标前缀,即服务器会将以“/screen/user”大屏用户
        registry.enableSimpleBroker("/app");
    }

    @Override
    public void configureWebSocketTransport(final WebSocketTransportRegistration registry) {
        registry.setSendTimeLimit(15 * 1000); // 发送消息的最大时间限制
        registry.setMessageSizeLimit(128 * 1024); // 设置文本消息的大小限制
        registry.setSendBufferSizeLimit(512 * 1024); //发送缓冲区的最大大小限制
    }

    @Bean
    public HandshakeInterceptor handshakeInterceptor() {
        return new StaffHandshakeInterceptor();
    }
}
@Slf4j
public class StaffHandshakeInterceptor implements HandshakeInterceptor {
    @Override
    public boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, Map<String, Object> attributes) throws Exception {
        log.info("WebSocket 握手连接前处理");
        return true;
    }

    @Override
    public void afterHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, Exception exception) {
        log.info("WebSocket 握手连接后处理");
    }
}

执行结果如图:

在这里插入图片描述
非常头疼,看了网上很多文章和我写的都一样,就是找不到原因。

问题解决

然后在网上看到一篇文章说要加上@Component注解才能被Spring容器管理,很疑惑什么时候@Configuration注解还能不生效,一般定义好后就会直接注入啊,然后进入注解类看看细节,如图所示:

在这里插入图片描述
里面包含了@Component注解,然后我再回去看一看我写的代码,发现注解错了,难怪不注入,如图所示:

在这里插入图片描述
不细心点,根本注意不到(┭┮﹏┭┮),然后把@Configurable改为@Configuration注解,重新启动,运行正常。


原文地址:https://blog.csdn.net/qq_39940674/article/details/144039813

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!