心跳包设置pingNotResponseLimit后,客户端会断开

0

客户端与Gateway进行websocket长连接的情况下,
设置了pingInterval=30,pingNotResponseLimit=0,


这种情况下,客户端会稳定连接着,


但如果设置了pingNotResponseLimit > 0,等于1至等于5都试过,


就会在 30 * pingNotResponseLimit时断开链接;


防火墙是关着的,所以不会受防火墙的影响,本以为可能是服务器环境问题,
后来重新搭建了个新的环境,只跑PHP和相关依赖,也同样出现这个情况;


请问下还有什么因素会导致这种情况;例如keepalive?

已邀请:

walkor

赞同来自:


Gateway::$pingInterval
服务端向客户端发送心跳数据的时间间隔 单位:秒。如果设置为0代表不发送心跳检测
Gateway::$pingNotResponseLimit
客户端连续$pingNotResponseLimit次$pingInterval时间内不回应心跳则断开链接。



摘自手册 http://doc2.workerman.net/326139


如果$pingNotResponseLimit>0,客户端必须在$pingInterval*$pingNotResponseLimit秒时间内发送心跳给服务端,不然服务端就认为客户端已经下线,断开链接。

124543719

赞同来自:

我也发生这种问题了,求大神解答!

124543719

赞同来自:

客户端有回应,我专门在event里面写了一个日志,可以收到客户端回应,但是gateway依然断开连接了!

walkor

赞同来自:

客户端回应不及时会断开,日志记录下客户端发心跳的时间,看看是否超过gateway的心跳时间限制。
另外改了gateway的配置要restart重启,不然无效

要回复问题请先登录注册