关于PING/PONG的问题

elviswong

问题描述

GetewayWorker Version:3.5.34

  1. 客户端每隔30秒发送PING帧
  2. 服务端有PONG帧返回
  3. 服务端超时时间55秒
  4. 抓包看 30秒内有PING/PONG,但是服务端的连接还是断掉了,感觉没生效。因为是PING/PONG帧,无数据,所有服务端也没回调onMessage
    Tips:除了通过数据报的形式发送心跳,框架默认该怎么解决这个问题;目前心跳检测不能正确处理PING/PONG帧用于连接保持
    charles抓包

    服务端代码

    服务端心跳检测代码

714 1 0
1个回答

walkor

心跳不触发onMessage的话pingNotResponseLimit设置为0

  • elviswong 2023-05-31

    设置为0 不就不触发心跳检测了吗?如果设置为0,opCode PING 会走onMessage?

  • walkor 2023-05-31

    gatewayWorker的心跳检测机制是基于onMesage检测的,协议层的ping pong不会走onMesage。
    按照手册pingNotResponseLimit=0的含义是,检测不到心跳时不断开连接

  • elviswong 2023-05-31

    那我可以理解为,目前不支持:协议层的PING/PONG + pingNotResponseLimit=1 这种方式来保持连接,只能通过自己发送TEXT 数据报来做心跳对吗

  • walkor 2023-05-31

  • tqjs 8天前

    刚好也有这个考虑,搜索进来后想问下后续有考虑加上这个支持吗?

🔝