swoole怎麼保持不掉線

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

尤爲是移動網絡,TCP鏈接很是不穩定,因此須要一套機制來保證服務器和客戶端之間鏈接的有效性。swoole

Swoole擴展自己內置了這種機制,開發者只須要配置一個參數便可啓用。Swoole在每次收到客戶端數據會記錄一個時間戳,當客戶端在必定時間內未向服務器端發送數據,那服務器會自動切斷鏈接。網絡

使用方法:函數

 

 

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

高級用法:server

使用swoole_server::heartbeat()函數手工檢測心跳是否到期。此函數會返回閒置時間超過heartbeat_idle_time的全部TCP鏈接。程序中能夠將這些鏈接作一些操做,如發送數據或關閉鏈接。blog

以上是文章所有內容,有須要學習交流的友人請加入交流羣的我們一塊兒,有問題一塊兒交流,一塊兒進步!前提是你是學技術的。感謝閱讀!開發

點此加入該羣get

相關文章
相關標籤/搜索