我有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)方法只是設置最大會話到期值,但不會重置會話倒計時器。我需要找到不同的解決方案。 –