我有Java Spring应用程序,它具有通过WebSocket提供的Chat端点。用户使用API调用登录并且会话超时10分钟。Websocket聊天消息不会延长HttpSession
为了开始聊天,我必须连接到WebSocket端点。它没有连接,没有问题,但事情是这样的:从客户端发送的每个聊天消息不会延长登录HttpSession,所以在10分钟后超时。
如何通过WebSocket连接延长HttpSession使聊天消息?换句话说:如何将HttpSession超时定时器重置为通过WebSocket发送的每条消息10分钟?
使用反射方法我从WebSocket会话中获得HttpSession,然后我调用setMaxInactiveInterval()方法重置会话超时定时器,但它不起作用,会话在10分钟后仍然超时,即使我发送了许多消息。
@OnMessage
public void onMessage(Session session, String message) {
HttpSession httpSession = getHttpSession(session);
processMessage(message);
int initialTimeout = httpSession.getMaxInactiveInterval(); // returns 600 (10 mins)
httpSession.setMaxInactiveInterval(initialTimeout);
}
我需要找到春天的方式扩展在每个API调用了会议,并可能做同样的方式。有谁知道Spring是怎么做到的?
请您发布您的代码?你想如何保持你的会议? –
刚刚更新了我的原始文章 –
好吧,我刚刚明白,我做错了。 httpSession.setMaxInactiveInterval(initialTimeout)方法只是设置最大会话到期值,但不会重置会话倒计时器。我需要找到不同的解决方案。 –