我正在将现有的弹簧MVC Web应用程序与弹簧腹板集成在一起。我按照
中的说明成功地进行了整合https://spring.io/guides/gs/messaging-stomp-websocket/
现有的Web应用程序有一个过滤器,它设置了一些属性。我需要在@MessageMapping方法中访问控制器i中的过滤器设置的属性。
有人可以告诉我们如何在@MessageMapping方法中访问请求对象?
答案 0 :(得分:6)
当STOMP客户端连接到应用程序时,它首先必须请求协议升级才能切换到websocket。一旦使用了websocket连接,发送/接收的消息就不会通过常规的Servlet过滤器 - 只有第一个HTTP请求(“握手”)。
根据您的使用情况,有几种方法可以实现这一目标。
如果它与身份验证相关,那么Spring Framework中的there are existing features for this,以及Spring Security中的see reference doc。
如果它与HTTP会话相关,您可以轻松地要求将所有HTTP会话属性复制到websocket会话中 - 甚至可以根据自己的需要自定义握手(see reference doc)。完成后,您可以在@MessageMapping
控制器方法中注入Websocket范围并获取这些属性({{3}})。