解决springboot启动报Failed to start bean ‘subProtocolWebSocketHandler‘;

解决springboot启动报 Failed to start bean 'subProtocolWebSocketHandler'; nested exception is java.lang.IllegalArgumentException: No handlers

  • 问题发现
  • 问题解决

问题发现

使用springboot整合websocket,启动时报错,示例代码:

@EnableWebSocket
@Configuration
public class WebSocketConfig implements WebSocketConfigurer {
    @Override
    public void registerWebSocketHandlers(WebSocketHandlerRegistry webSocketHandlerRegistry) {
        webSocketHandlerRegistry.addHandler(myWebSocketHandler(),"/ws").addInterceptors(new MyHandshakeInterceptor());
    }
    @Bean
    public WebSocketHandler myWebSocketHandler() {
        return new MyWebSocketHandler();
    }

    @Bean
    public ServletServerContainerFactoryBean createWebSocketContainer() {
        ServletServerContainerFactoryBean container = new ServletServerContainerFactoryBean();
        container.setMaxBinaryMessageBufferSize(8192); // 设置二进制消息缓冲区大小
        container.setMaxTextMessageBufferSize(8192); // 设置文本消息缓冲区大小
        container.setAsyncSendTimeout(5000l); // 设置异步发送超时时间(毫秒)
        // 其他配置项...

        return container;
    }
}
public class MyWebSocketHandler extends TextWebSocketHandler {

    @Override
    protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
        // 处理接收到的文本消息
        String payload = message.getPayload();
        System.out.println("接收到消息:" + payload);

        // 发送响应消息
        session.sendMessage(new TextMessage("Hello, client!"));
    }

    @Override
    public void afterConnectionEstablished(WebSocketSession session) throws Exception {
        // WebSocket 连接建立时执行的操作
        System.out.println("WebSocket 连接已建立");
    }

    @Override
    public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception {
        // WebSocket 连接关闭时执行的操作
        System.out.println("WebSocket 连接已关闭");
    }
}
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketBrokerConfigurer implements WebSocketMessageBrokerConfigurer {

}

如图所示:

在这里插入图片描述

问题解决

在上述代码中可以看到有两个注解,@EnableWebSocketMessageBroker@EnableWebSocket,同时使用,导致配置错误引起的。由于这两个注解都启用了 WebSocket 功能,因此同时使用它们可能会导致冲突。

两者取其一即可,我们将@EnableWebSocketMessageBroker 删掉,暂时不用基于消息代理。重新启动后,如图:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/330526.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

大数据时代的黄金机遇:阿里云大数据分析师ACP认证【一条龙服务100%通过】

扫码和我联系 随着大数据技术的迅速发展和广泛应用,成为了当今时代最具吸引力的技术之一。为了让更多技术人才把握这一时代机遇,阿里云推出了大数据分析师ACP认证(Alibaba Cloud Certified Professional - Data Analyst)&#xf…

数据结构:顺序栈

栈是一种先进后出的数据结构,只允许在一端(栈顶)操作,代码中top表示栈顶。 stack.h /* * 文件名称:stack.h * 创 建 者:cxy * 创建日期:2024年01月17日 * 描 述: …

LeetCode、2542. 最大子序列的分数【中等,排序+小顶堆】

文章目录 前言LeetCode、2542. 最大子序列的分数【中等,排序小顶堆】题目及类型思路及代码实现 资料获取 前言 博主介绍:✌目前全网粉丝2W,csdn博客专家、Java领域优质创作者,博客之星、阿里云平台优质作者、专注于Java后端技术领…

基于Springboot的摄影分享网站系统(有报告)。Javaee项目,springboot项目。

演示视频: 基于Springboot的摄影分享网站系统(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构…

GBASE南大通用数据库GBase BI V5支持的集群部署

GBaseBI V5可以单独部署在一个服务器上,在单套的情况下安装成功后不需要特殊的设置即可直接使用。某些用户的应用并发数可能很多,单个服务器处理请求太慢,GBaseBI V5支持集群和分布式部署。其中集群部署如下图所示: 集群部署 在集…

【Vue3】2-13 : 章节总结

本书目录:点击进入 一、总结内容 二、习题 2.1 【选择题】以下Vue指令中,哪些指令具备简写方式? 2.2 【编程题】以下Vue指令中,哪些指令具备简写方式? > 效果 > 代码 一、总结内容 了解核…

《WebKit 技术内幕》之三(3): WebKit 架构和模块

3 Webkit2 3.1 Webkit2 架构及模块 相比于狭义的WebKit,WebKit2是一套全新的结构和接口,而并不是一个简单的升级版。Webkit2 的思想同 Chrominum 类似,就是将渲染过程放在单独的进程中来完成,独立于用户界面。 webKit2中…

ARM 1.12

norflash与nandflash的区别: 一、NAND flash和NOR flash的性能比较 1、NOR的读速度比NAND稍快一些。 2、NAND的写入速度比NOR快很多。 3、NAND的4ms擦除速度远比NOR的5s快。 4、大多数写入操作需要先进行擦除操作。 5、NAND的擦除单元更小,相应的擦除电…

嵌入式软件工程师面试题——2025校招社招通用(二十一)

说明: 面试群,群号: 228447240面试题来源于网络书籍,公司题目以及博主原创或修改(题目大部分来源于各种公司);文中很多题目,或许大家直接编译器写完,1分钟就出结果了。但…

Unity关于新手引导中实现遮罩镂空效果

在新手引导每一步中实现可以遮掉其他部分而显示当前需要点击的部分,只需要在每一步引导的时候设置对应的镂空区域的RectTransform.效果如下图: 代码: public class SelfMaskSet : MaskableGraphic, ICanvasRaycastFilter {[SerializeField]p…

企业面临哪些能源消耗问题,能源消耗监测管理系统是如何解决这些问题?

随着全球环境问题的日益严重,能源问题一直被世界广泛关注。在企业运营过程中,能源消耗问题也是一大挑战。企业在生产和运营过程中需要大量的能源支持,包括电、水、气、热等多种能源。由于能源价格的不稳定性,使得企业在能源消耗方…

数学建模--比赛

内容来自数学建模BOOM:【快速入门】北海:数模建模基础MATLAB入门论文写作数学模型与算法(推荐数模美赛国赛小白零基础必看教程)_哔哩哔哩_bilibili 目录 1.学习内容 2.参赛须知 1)参赛作品的组成 2)参赛作品的提交 3.软件安装 4.注意…

微图Web版如何加载吉林一号影像?

曾为你分享了如何查看调用我们已购买的上海黄浦区区县图。 这里再以该图源为例,为你分享在水经微图(简称“微图”)Web版中如何加载吉林一号影像的方法。 吉林一号图源 如果你还没有吉林一号图源,可以从以下网址登录后免费申请。…

《C++ Primer》第15章 面向对象程序设计(一)

参考资料: 《C Primer》第5版《C Primer 习题集》第5版 15.1 OOP:概述(P526) **面向对象程序设计(object-oriented programming)**的核心思想是数据抽象、继承和动态绑定。 继承 通过继承(…

pycharm import torch

目录 1 安装 2 conda环境配置 3 测试 开始学习Pytorch! 1 安装 我的电脑 Windows 11 Python 3.11 Anaconda3-2023.09-0-Windows-x86_64.exe cuda_11.8.0_522.06_windows.exe pytorch (管理员命令行安装) pycharm-community-2023.3.2.exe 2 c…

集成电路/芯片可循环成本(RE)和非可循环成本(NRE)

数字集成电路(Integrated Circuit,IC)的成本可以分为可循环成本和非可循环成本两类。 可循环成本是指在芯片制造过程中,随着芯片批量的增加而逐渐降低的成本。可循环成本主要包括: 晶圆制造成本:包括晶圆…

OpenCV-19图像的仿射变换

放射变换是图像旋转,缩放,平移的总称,具体的做法是通过一个矩阵和原图片坐标进行计算,得到新的坐标,完成变换,所以关键就是这个矩阵。 一、仿射变换之图像平移 使用API------warpAffine(src &…

C++ --- 基础知识与细节(上)

目录 1. 常量 2.关键字 3.标识符命名规则 4.数据类型 4.1 整型 4.2实型(浮点型) 4.3 字符型 4.4 字符串型 4.5布尔类型 bool (只占一个字节大小) 5.sizeof关键字 6.数据的输入 7. goto语句 8. 一维数组 // 数组名是常量&am…

【Filament】材质系统

1 前言 本文主要介绍 Filament 的材质系统,官方介绍详见 → Filament Materials Guide。材质系统中会涉及到一些空间和变换的知识点,可以参考:【Unity3D】空间和变换、【Unity3D】Shader常量、变量、结构体、函数、【OpenGL ES】MVP矩阵变换、…

IDEA中启动项目报堆内存溢出或者没有足够内存的错误

1.报错现象 java.lang.OutOfMemoryError: Java heap space 或者 Could not reserve enough space for object heap 2.解决办法 在运行配置中VM选项后加下面的配置: -server -XX:MaxHeapSize256m -Xms512m -Xmx512m -XX:PermSize128M -XX:MaxPermSize256m 3.JVM虚…