即使websocket连接是活动的,会话也已过期

时间:2014-11-30 14:40:17

标签: java session tomcat websocket java-ee-7

我的要求如下:

  1. 使用该应用程序登录。
  2. 成功登录后打开websocket连接
  3. 双向交换数据通过websocket,但没有通过HTTP直接通信
  4. 我已配置会话超时>在web.xml中15分钟。即使websocket连接是活动的,但会话终止。

2 个答案:

答案 0 :(得分:3)

java websocket规范中存在一个针对Websocket消息握手的错误,不会更新访问时间。因此,如果我们在任何符合Java规范的服务器中指定过期策略,则不会更新websocket消息交换上的访问时间。因此,建议设置更高的到期值或无限会话到期时间。

参考文献: Tomcat门票:https://issues.apache.org/bugzilla/show_bug.cgi?id=54738 Java规范故障单:https://java.net/jira/browse/WEBSOCKET_SPEC-175

答案 1 :(得分:1)

你必须找到一种方法来推动会话在java中的滑动过期。由于没有新的HTTP请求正在进行,如果您没有对此做任何事情,会话将会过期。

每次通过websocket收到消息时,尝试使用值调用setMaxInactiveInterval,它可能会重置tiemr。

干杯。