• 技术文章 >php框架 >Workerman

    workerman如何保持连接

    尚2019-12-06 14:50:30原创2526

    正常的情况客户端断开连接会向服务端发送一个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如何保持连接的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:workerman
    上一篇:linux检测是否支持workerman 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • php workerman是异步么• workerman需要安装吗• workerman start不了的原因与解决方法• linux检测是否支持workerman
    1/1

    PHP中文网