您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

使用Spring MVC RequestMappingHandlerMapping和Spring Websocket的ServletWebSocketHandlerRegistry处理相同的URL

使用Spring MVC RequestMappingHandlerMapping和Spring Websocket的ServletWebSocketHandlerRegistry处理相同的URL

问题是-当MVC控制器优先时,它总是以HTTP 200响应,WebSocket处理程序从未到达

RequestMappingHandlerMapping优先于时WebSocketHandlerMapping,对于它们都可以处理的对端点的请求(如果仅考虑URL),DispatcherServlet会将请求分派给@RequestMapping方法,而不是WebSocket处理程序。为了解决此问题,请限制@RequestMapping方法只提供不带Connection:Upgrade标头的请求:

@Controller
public class Status {
    @RequestMapping(value = "/", method = GET, headers = "Connection!=Upgrade")
    public String status() {
        return "OK";
    }
}

这样,当DispatcherServlet搜索该公共端点的处理程序时,它将考虑Connection:Upgrade标头的存在或不存在,以确定满足请求的正确处理程序。

Jave 2022/1/1 18:20:42 有345人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶