解决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 {
System.out.println("WebSocket 连接已建立");
@Override
public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception {
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