如何使用spring websocket实现访问@MessageMapping方法中的请求对象

pav*_*van 1 spring spring-mvc spring-websocket

我正在将现有的弹簧MVC Web应用程序与弹簧腹板集成在一起.我按照说明成功地整合了

https://spring.io/guides/gs/messaging-stomp-websocket/

现有的Web应用程序有一个过滤器,它设置了一些属性.我需要在@MessageMapping方法中访问控制器i中的过滤器设置的属性.

有人可以告诉我们如何在@MessageMapping方法中访问请求对象?

Bri*_*zel 6

当STOMP客户端连接到应用程序时,它首先必须请求协议升级才能切换到websocket.一旦使用了websocket连接,发送/接收的消息就不会通过常规的Servlet过滤器 - 只有第一个HTTP请求("握手").

根据您的使用情况,有几种方法可以实现此目的.

如果它与身份验证相关,那么Spring框架中现有的功能,以及Spring Security中的功能.

如果它与HTTP会话相关,您可以轻松地要求将所有HTTP会话属性复制到websocket会话中 - 甚至可以根据自己的需要自定义握手(请参阅参考文档).完成后,您可以在@MessageMapping控制器方法中注入Websocket范围并获取这些属性(请参阅参考文档).