添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
天涯  ·  扩展点设计 - heyong - 简书·  1 年前    · 
天涯  ·  spring @Import四种实践 - ...·  1 年前    · 
天涯  ·  Spring @Import注解 —— ...·  1 年前    · 
天涯  ·  Flowable入门系列文章180 - ...·  1 年前    · 
很拉风的烈酒  ·  如何在 Kali Linux ...·  11 月前    · 

解决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 删掉,暂时不用基于消息代理。重新启动后,如图:

目录WebsocketHandlerSubProtocolWebSocketHandler四个重要成员变量protocolHandlerLookup子协议SubProtocolHandlersessionsclientInboundChannelclientOutboundChannel WebsocketHandler 一个用来处理Websocket Messages和生命周期事件的处理程序...
问题的根源在于问题的根源是你没有在registerStompEndpoints中配置任何端点。尝试使用STOMP但尚未配置任何STOMP端点的应用程序将无法正常工作。 开始的代码是这样的: @Configuration public class CustomWebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer { @Bean(value = "serverEndpointExporter") public Serv
原因: 这是因为Springfox使用的路径匹配是基于AntPathMatcher的,而Spring Boot 2.6.X使用的是PathPatternMatcher。 解决:在application.properties里配置:spring.mvc.pathmatch.matching-strategy=ANT_PATH_MATCHER 1.导入依赖 <dependency> <groupId>io.springfox</groupId
前两篇文章分析了node.js版本的socket.io的服务端与客户端的代码,其实他们socket.io就是在websocket的基础上进一步做了一层封装,添加了一些心跳,重连接。。。 这篇文章就先来看看在netty中是如何建立websocket服务端的吧,先来回顾一下websocket建立连接以及通信的过程: (1)客户端向服务端发送http文格式的请求,而且是GET方法的请求,不过这里与
连接错信息 org.springframework.context.ApplicationContextException: Failed to start bean 'webServerStartStop'; nested exception is java.lang.reflect.UndeclaredThrowableException at org.springframewo
环境背景:JDK13、IDEA2019.2.4、maven3.6.1、springboot2.2.1.RELEASE、 异常一:java.lang.IllegalStateException: No suitable default RequestUpgradeStrategy found 异常背景:启动主程序时错 异常详情: E:\jdk\jdk-13.0.1\bin\java.ex...
java springboot启动Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException