swoole怎么保持不掉線

swoole怎么保持不掉線

正常情況下客戶端中斷TCP連接時,會發送一個FIN包,進行4次斷開握手來通知服務器。但一些異常情況下,如客戶端突然斷電斷網或者網絡異常,服務器可能無法得知客戶端已斷開連接。

尤其是移動網絡,TCP連接非常不穩定,所以需要一套機制來保證服務器和客戶端之間連接的有效性。

swoole擴展本身內置了這種機制,開發者只需要配置一個參數即可啟用。Swoole在每次收到客戶端數據會記錄一個時間戳,當客戶端在一定時間內未向服務器端發送數據,那服務器會自動切斷連接。?(推薦學習:?swoole視頻教程

使用方法:

$serv->set(array(     'heartbeat_check_interval' => 5,     'heartbeat_idle_time' => 10, ));

上面的設置就是每5秒偵測一次心跳,一個TCP連接如果在10秒內未向服務器端發送數據,將會被切斷。

高級用法:

使用swoole_server::heartbeat()函數手工檢測心跳是否到期。此函數會返回閑置時間超過heartbeat_idle_time的所有TCP連接。程序中可以將這些連接做一些操作,如發送數據或關閉連接。

以上就是

? 版權聲明
THE END
喜歡就支持一下吧
點贊11 分享