【发布时间】:2014-11-30 14:40:17
【问题描述】:
我的要求如下:
- 使用应用程序登录。
- 成功登录时打开 websocket 连接
- 通过 websocket 双向交换数据,但没有通过 HTTP 直接通信
我在 web.xml 中配置了 session-timeout > 15mins。即使 websocket 连接是活动的,但会话已终止。
【问题讨论】:
标签: java session tomcat websocket java-ee-7
我的要求如下:
我在 web.xml 中配置了 session-timeout > 15mins。即使 websocket 连接是活动的,但会话已终止。
【问题讨论】:
标签: java session tomcat websocket java-ee-7
Java websocket 规范中有一个错误,Websocket 消息握手不会更新访问时间。因此,如果我们在任何符合 Java 规范的服务器中指定过期策略,则不会更新 websocket 消息交换的访问时间。因此,建议设置更高的过期值或无限会话过期时间。
参考资料: 雄猫票:https://issues.apache.org/bugzilla/show_bug.cgi?id=54738 Java 规范票:https://java.net/jira/browse/WEBSOCKET_SPEC-175
【讨论】:
您必须找到一种在 java 中推动会话滑动到期的方法。由于没有执行新的 HTTP 请求,因此如果您不执行任何操作,会话将过期。
每次通过websocket收到消息时,尝试用值调用setMaxInactiveInterval,它可能会重置tiemr。
干杯。
【讨论】: