您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關swoole如何保持不掉線,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
正常情況下客戶端中斷TCP連接時,會發送一個FIN包,進行4次斷開握手來通知服務器。但一些異常情況下,如客戶端突然斷電斷網或者網絡異常,服務器可能無法得知客戶端已斷開連接。
尤其是移動網絡,TCP連接非常不穩定,所以需要一套機制來保證服務器和客戶端之間連接的有效性。
Swoole擴展本身內置了這種機制,開發者只需要配置一個參數即可啟用。Swoole在每次收到客戶端數據會記錄一個時間戳,當客戶端在一定時間內未向服務器端發送數據,那服務器會自動切斷連接。
使用方法:
$serv->set(array( 'heartbeat_check_interval' => 5, 'heartbeat_idle_time' => 10, ));
上面的設置就是每5秒偵測一次心跳,一個TCP連接如果在10秒內未向服務器端發送數據,將會被切斷。
高級用法:
使用swoole_server::heartbeat()函數手工檢測心跳是否到期。此函數會返回閑置時間超過heartbeat_idle_time的所有TCP連接。程序中可以將這些連接做一些操作,如發送數據或關閉連接。
關于“swoole如何保持不掉線”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。