Java 使用ping/pong断开连接时断开Websocket会话
我有一个SpringBoot项目,在其中我实现了web套接字。我没有使用STOMP,而是实现了一个处理所有消息的Java 使用ping/pong断开连接时断开Websocket会话,java,spring,spring-boot,websocket,spring-websocket,Java,Spring,Spring Boot,Websocket,Spring Websocket,我有一个SpringBoot项目,在其中我实现了web套接字。我没有使用STOMP,而是实现了一个处理所有消息的TextWebSocketHandler 为了处理网络故障时的会话断开,我使用了乒乓球方案,如下所示 有一个定期任务,它向每个WebSocketSession发送PingMessage。我为每个会话保留一个标志,指示是否收到了pong 在发送ping消息之前,我检查是否已收到先前发送的ping的pong,如果未收到,则使用WebSocketSession类的close()方法关闭会
TextWebSocketHandler
为了处理网络故障时的会话断开,我使用了乒乓球方案,如下所示
- 有一个定期任务,它向每个
发送WebSocketSession
。我为每个会话保留一个标志,指示是否收到了pong李>PingMessage
- 在发送ping消息之前,我检查是否已收到先前发送的ping的pong,如果未收到,则使用
类的WebSocketSession
方法关闭会话close()
- 收到pong消息后,我更新会话的标志
- 在发送ping消息之前,我检查是否已收到先前发送的ping的pong,如果未收到,则使用
现在的问题是,当我试图关闭一个会话时,其他会话也会被关闭。我在
afterConnectionClosed()
回调中添加了一些日志,我可以看到除了调用close()
方法的会话之外,它正在被触发
我不知道为什么会这样
还有,有没有其他方法可以处理web套接字中的连接丢失
以下是一些与版本相关的信息
- 弹簧启动版本1.5.10.发布
- JDK1.8