You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot WebSocket与SpringDoc Swagger UI冲突:报错“Can Upgrade only to WebSocket”

问题与解决方案:WebSocket与SpringDoc OpenAPI共存问题

问题描述

Spring Boot应用中,WebSocket端点配置为/*(匹配所有路径),同时集成SpringDoc OpenAPI暴露Swagger UI。访问/swagger-ui/index.html时出现错误提示:Can 'Upgrade' only to 'WebSocket',原因是WebSocket拦截了Swagger UI的HTTP请求,导致请求被错误地当作WebSocket升级请求处理。

解决方案

无需修改WebSocket的/*端点,只需在WebSocket配置中排除Swagger相关的路径,让这些请求交由Spring MVC正常处理即可。

修改WebSocketConfig类,添加excludePathPatterns方法排除Swagger相关路径:

@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {

    @Override
    public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
        registry.addHandler(new MyWebSocketHandler(), "/*")
                .setAllowedOrigins("*")
                // 排除Swagger UI及OpenAPI文档的相关路径
                .excludePathPatterns(
                    "/swagger-ui/**",
                    "/v3/api-docs/**",
                    "/swagger-resources/**",
                    "/webjars/**"
                );
    }
}

说明

  • excludePathPatterns方法用于指定WebSocket handler不处理的路径,将Swagger的静态资源、API文档元数据等路径全部排除后,这些请求会被Spring MVC正确处理,不再触发WebSocket的升级逻辑。
  • 该方案保留了WebSocket的/*端点配置,同时解决了与Swagger UI的路径冲突问题,无需调整Swagger的默认路径或重定向规则。

内容的提问来源于stack exchange,提问作者Michał Zawadzki

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 21:23:36