Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用ping/pong断开连接时断开Websocket会话_Java_Spring_Spring Boot_Websocket_Spring Websocket - Fatal编程技术网

Java 使用ping/pong断开连接时断开Websocket会话

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()方法关闭会

我有一个SpringBoot项目,在其中我实现了web套接字。我没有使用STOMP,而是实现了一个处理所有消息的
TextWebSocketHandler


为了处理网络故障时的会话断开,我使用了乒乓球方案,如下所示

  • 有一个定期任务,它向每个
    WebSocketSession
    发送
    PingMessage
    。我为每个会话保留一个标志,指示是否收到了pong
  • 在发送ping消息之前,我检查是否已收到先前发送的ping的pong,如果未收到,则使用
    WebSocketSession
    类的
    close()
    方法关闭会话
  • 收到pong消息后,我更新会话的标志

现在的问题是,当我试图关闭一个会话时,其他会话也会被关闭。我在
afterConnectionClosed()
回调中添加了一些日志,我可以看到除了调用
close()
方法的会话之外,它正在被触发

我不知道为什么会这样

还有,有没有其他方法可以处理web套接字中的连接丢失


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

  • 弹簧启动版本1.5.10.发布
  • JDK1.8

您正在开发服务器和客户端吗?我正在开发服务器。客户端是移动应用程序和web应用程序,不属于本spring项目的一部分