tcp如何保持長時間連接不斷開

https://wiki.swoole.com/wiki/page/160.html
TCP KeepAlive機制 的作用 是檢測連接的有無(死活),但無法檢測連接是否有效,如斷網的時候。“連接有效”的定義 = 雙方具備發送 & 接收消息的能力

KeepAlive機制無法代替心跳機制,需要在應用層 自己實現心跳機制以檢測長連接的有效性,從而高效維持長連接

綜合主流移動IM產品,此處建議心跳檢測時間 爲4分鐘
swoole中 如果想保持長時間連接(中間沒有數據交互)不斷開 , keepAlive不要打開,應用層實現心跳檢測 heartbeat_check 即可

因爲(Keep-Alive機制不會強制切斷連接,如果連接存在但是一直不發生數據交互。Keep-Alive不會切斷連接。而應用層實現的心跳檢測 heartbeat_check 即便連接存在,但不產生數據交互的情況下,依然會強制切斷連接。)

$serv->set(array(
‘heartbeat_check_interval’ => 120,
‘heartbeat_idle_time’ => 240,
));
上面的設置就是每120秒偵測一次心跳,一個TCP連接如果在240秒內未向服務器端發送數據,將會被切斷。

所有爲了保持長時間不斷開,web端需要實現心跳,即如果沒數據發送到服務器,每隔120秒向服務器發送空數據

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章