Rumah >rangka kerja php >Workerman >workerman如何保持连接

workerman如何保持连接

尚
asal
2019-12-06 14:50:304413semak imbas

workerman如何保持连接

正常的情况客户端断开连接会向服务端发送一个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教程栏目。

Atas ialah kandungan terperinci workerman如何保持连接. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:linux检测是否支持workermanArtikel seterusnya:linux下workerman怎么启动