
一般的状况客户端断开衔接会向服务端发送一个fin包,服务端收到fin包后得知客户端衔接断开,则马上触发onClose事宜回调。
然则有些极度状况如客户端掉电、收集封闭、拔网线、路由毛病等,这些极度状况客户端没法发送fin包给服务端,服务端便没法晓得衔接已断开。假如客户端与服务端定时有心跳数据传输,则会比较实时的发明衔接断开,触发onClose事宜回调。
别的路由节点防火墙会封闭长时间不通信的socket衔接,致使socket长衔接断开。所以须要客户端与服务端定时发送心跳数据坚持衔接不被断开。
GatewayWorker中怎样设置心跳检测?
现在GatewayWorker支撑两种心跳检测,服务端设定若干秒内没收到心跳封闭衔接(引荐),同时也支撑服务端定时向客户端发送心跳数据(不引荐)。
客户端定时发送心跳(引荐)
客户端定时(距离最好小于60秒)向服务端发送心跳。服务端相似以下设置:
$gateway = new Gateway("Websocket://0.0.0.0:8585"); $gateway->pingInterval = 55; $gateway->pingNotResponseLimit = 1; $gateway->pingData = '';
以上设置寄义是客户端衔接 pingInterval*pingNotResponseLimit=55 秒内没有任何要求则服务端以为对应客户端已掉线,服务端封闭衔接并触发onClose回调。
更多workerman学问请关注workerman教程栏目。
以上就是workerman怎样坚持衔接的细致内容,更多请关注ki4网别的相干文章!