我的要求如下:
- 使用应用程序登录。
- 成功登录时打开网络套接字连接 通过
- websocket双向交换数据,但没有通过HTTP直接通信
我已经在 web.xml 中配置了会话超时> 15 分钟。即使 websocket 连接是实时的,但会话也会终止。
Java websocket 规范中存在一个 Websocket 错误,因为 Websocket 消息握手不会更新访问时间。因此,如果我们在任何符合 Java 规范的服务器中指定过期策略,将不会更新 websocket 消息交换的访问时间。因此,建议设置更高的过期值或无限的会话过期时间。
引用:雄猫门票:https://issues.apache.org/bugzilla/show_bug.cgi?id=54738Java 规范票证:https://java.net/jira/browse/WEBSOCKET_SPEC-175
您必须找到一种方法来推动 Java 中的会话滑动过期。由于没有执行新的 HTTP 请求,因此如果您不对其进行任何操作,会话将过期。
尝试调用 setMaxInactiveInterval 与值每次通过 websocket 接收消息时,它可能会重置 tiemr。
干杯。