使用ping / pong

时间:2019-03-26 13:17:20

标签: java spring spring-boot websocket spring-websocket

我有一个Spring Boot项目,其中实现了Web套接字。我没有使用STOMP,而是实现了一个 TextWebSocketHandler 来处理所有消息。


为了处理网络故障时的会话断开连接,我按照此线程handling-connection-loss-with-websockets

的建议使用了以下乒乓方案
  • 有一个定期任务,它将 PingMessage 发送给每个 WebSocketSession 。我为每个会话保留一个标志,用于指示是否已收到乒乓球。
  • 在发送ping消息之前,我检查是否收到了先前发送的ping的pong,如果没有收到,则使用 close() 方法关闭会话> WebSocketSession
  • 收到乒乓消息后,我会更新会话标志

现在的问题是,当我尝试关闭一个会话时,其他会话也会被关闭。我在 afterConnectionClosed() 回调中添加了一些日志,并且可以看到,除我称为 close() 方法。

我不确定为什么会这样。

此外,还有其他方法可以用来处理Web套接字中的连接丢失


以下是与版本有关的一些信息

  • 春季启动版本 1.5.10.RELEASE
  • JDK 1.8

0 个答案:

没有答案