【发布时间】:2014-11-25 05:37:46
【问题描述】:
我有一个使用 stomp 的简单 Web 套接字应用程序。当用户访问页面时,它会自动与服务器建立连接。用户通过 spring security 进行身份验证。当用户关闭浏览器时,我希望用户自动注销。为此,我创建了一个侦听器来侦听 SessionDisconnectEvent。问题是我没有与 websocket 会话关联的 httpSession 的句柄?是否想从 websocket 会话中获取 httpsession?
这是我的代码:
<websocket:message-broker application-destination-prefix="/test">
<websocket:stomp-endpoint path="/sbapp">
<websocket:handshake-interceptors>
<bean class="com.sample.HttpSessionIdHandshakeInterceptor"></bean>
</websocket:handshake-interceptors>
<websocket:sockjs />
</websocket:stomp-endpoint>
<websocket:stomp-broker-relay prefix="/topic,/queue,/user" relay-host="localhost" relay-port="61613"/>
</websocket:message-broker>
这是我的 websocket 会话监听器:
@Component
public class StompDisconnectListener implements ApplicationListener<SessionDisconnectEvent>{
@Override
public void onApplicationEvent(SessionDisconnectEvent event) {
System.out.println("Stomp disconnect: " + event.getSessionId());
}
}
我需要一种方法,当我收到断开连接事件时,我会收到相应的 HttpSession,然后手动注销 HttpSession。这可能吗?
【问题讨论】:
-
您找到解决这个问题的好方法了吗?在这里遇到相同的用例。
-
我也对这个问题的解决方案感兴趣。你最后是怎么解决的?
标签: spring-mvc spring-security spring-websocket