如何在java spring websocket中实现乒乓球

时间:2018-09-06 08:06:11

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

根据https://tools.ietf.org/html/rfc6455#page-37此处的文档, websocket必须以ping响应pong的请求。

我已实现spring boot websocket来处理来自客户端的websocket连接。

我实现了一个websocket客户端,该客户端会定期发送ping frames

我在这里https://stackoverflow.com/a/24438328发现无法在Java中处理ping消息。

我对此有疑问-

  1. 我是否必须处理ping中的这些java spring-boot websocket请求?
  2. 如果是,我该如何在spring boot应用程序中实现这一点,并用ping响应pong的请求?

2 个答案:

答案 0 :(得分:2)

  

我必须在java spring-boot websocket中处理这些ping请求吗?

服务器将自动发出乒乓球。

有关Tomcat,请参见

https://github.com/apache/tomcat85/blob/b21d02042c408053a1944b27c3196ec9be3db381/java/org/apache/tomcat/websocket/WsFrameBase.java#L348

https://github.com/apache/tomcat85/blob/b21d02042c408053a1944b27c3196ec9be3db381/java/org/apache/tomcat/websocket/WsFrameBase.java#L41-L42

对于码头

https://github.com/eclipse/jetty.project/blob/b0f34fec3f4156c6fb250132fe95a895e07fb5ae/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/events/AbstractEventDriver.java#L125-L143

ping没有在spring websocket处理程序(接收部分)中暴露

有了码头,就有可能得到有关ping的通知(请参见org.eclipse.jetty.websocket.api.WebSocketPingPongListener

但是spring-websocket并未使用它。

答案 1 :(得分:0)

扩展类TextWebSocketHandler并用handleTextMessage方法编写逻辑。如果您正在寻找更通用的方法,请查看WebSocketHandler界面。但是正如Antoniossss建议的那样,乒乓球已经在协议级别实现,用于检查连接是否仍然有效。

相关问题