当前位置: 首页 > article >正文

解决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注解,重新启动,运行正常。


http://www.kler.cn/a/415822.html

相关文章:

  • k8s 20版本以上,有了 CoreDNS作为域名解析服务器了,pod通过域名相互访问,需要额外配置dns条目吗
  • TDengine在debian安装
  • Leetcode:349. 两个数组的交集
  • 华为海思2025届校招笔试面试经验分享
  • 在 Django 中创建和使用正整数、负数、小数等数值字段
  • 学习ASP.NET Core的身份认证(基于Session的身份认证1)
  • 如何在谷歌浏览器中使用开发者工具调试网页
  • 004 MATLAB数值微积分
  • [Java]微服务之分布式事务
  • Redis【1】- 如何阅读Redis 源码
  • 3.22决策树,离散值
  • SpringMVC-Day2
  • layui-vue第三方库表格列事件怎么写
  • 人工智能之数学基础:欧式距离及在人工智能领域中的应用
  • 【FAQ】HarmonyOS SDK 闭源开放能力 —Push Kit(6)
  • 牛客 ZT13 小红的数字删除
  • go每日一题:mock打桩、defer、recovery、panic的调用顺序
  • 【Linux】进程控制-----进程等待wait与waitpid
  • 用Go语言重写Linux系统命令 -- ping
  • Python读取摄像头视频并将其保存为MP4文件
  • 利用Java爬虫获得店铺详情:技术解析
  • KUKA机器人中断编程5—自动回原点功能的编程
  • 工程企业如何做好成本控制?该如何入手?
  • 和鲸科技创始人CEO范向伟出席首届工业智算产业发展研讨会,共话 AI 创新与产业化落地
  • 在windows系统中安装python并确认安装成功
  • 中信建投张青:以金融智慧点亮公益新篇章