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

时间:2015-03-23 16:28:51

标签: spring spring-mvc spring-websocket

我正在将现有的弹簧MVC Web应用程序与弹簧腹板集成在一起。我按照

中的说明成功地进行了整合

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

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

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

1 个答案:

答案 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}})。