HTTP長連接和短連接

一、概念
HTTP長連接:客戶端和服務器建立一次連接之後,可以在這條連接線上進行多次請求/響應操作。一般會設置過期時間,也可以不設置。步驟如下:
連接->數據傳輸->保持連接(心跳)->數據傳輸->保持傳輸(心跳)->…->關閉連接
HTTP短連接:客戶端和服務器進行一次HTTP請求/響應之後,就關閉連接。所以一次請求/響應後就需要重新建立連接。步驟如下:
連接->數據傳輸->關閉連接

二、使用設置
以HTTP/1.1
1、設置短連接

connect:close

2、設置HTTP長連接,有過期時間

Connection:keep-alive 和Keep-Alive: timeout=60

建立長連接,連接時間設置爲60s;若60s內仍有接收到數據,則保持連接;若超過60s,則斷開連接。
3、設置HTTP長連接,無過期時間

Connection:keep-alive

表明連接永久有效。

三、適應條件
什麼時候用長連接,短連接?
長連接多用於點對點操作,操作頻率,連接量少的情況。
每個TCP連接都需要三步握手,四次揮手佔用時間。

例如:數據庫的連接用長連接,
如果用短連接頻繁的通信會造成socket錯誤,而且頻繁的socket 創建也是對資源的浪費。

四、心跳包機制
心跳包主要也就是用於長連接的保活和斷線處理。它像心跳一樣每隔固定時間發一次,以此來告訴服務器。一般的應用下,判定時間在30-40秒比較不錯。如果實在要求高,那就在6-9秒。每隔一段時間發送一次。
心跳檢測步驟:
1 客戶端每隔一個時間間隔發生一個探測包給服務器
2 客戶端發包時啓動一個超時定時器
3 服務器端接收到檢測包,應該回應一個包
4 如果客戶機收到服務器的應答包,則說明服務器正常,刪除超時定時器
5 如果客戶端的超時定時器超時,依然沒有收到應答包,則說明服務器掛了

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