由於通常情況下socket連線就是TCP連線,因此socket連線一旦建立,通訊雙方即可開始相互的傳送資料內容,直到雙方斷開連線。但在實際網路應用中,客戶端到伺服器之間的通訊往往需要穿越多箇中間節點,例如路由器、閘道器、防火牆等,大部分防火牆預設會關閉長時間處於非活躍狀態的連線而導致socket連線斷連,因此需要透過輪詢告訴網路,該連線處於活躍狀態。
而http連線使用的是“請求——響應”的方式,不僅請求時需要先建立連線,而且需要客戶端向伺服器發出請求後,伺服器端才能回覆資料。
很多情況下,需要伺服器端主動向客戶端推送資料,保持客戶端與伺服器資料的實時與同步。此時若雙方建立的是socket連線,伺服器就可以直接將資料傳回給客戶端;若雙方建立的是http連線,則伺服器需要等到客戶端傳送一次請求後才能將資料傳回給客戶端,因此,客戶端需定時向伺服器端傳送連線請求,不僅可以保持線上,同事也是在“詢問”伺服器是否有新的資料,如果有就傳給客戶端。
必須在防火牆放開對應的埠,否則客戶端無法接入。開啟防火牆時,不妨礙伺服器監聽某個埠,也不妨礙自身連線外部伺服器埠,主要是限制外部連線自身。
由於通常情況下socket連線就是TCP連線,因此socket連線一旦建立,通訊雙方即可開始相互的傳送資料內容,直到雙方斷開連線。但在實際網路應用中,客戶端到伺服器之間的通訊往往需要穿越多箇中間節點,例如路由器、閘道器、防火牆等,大部分防火牆預設會關閉長時間處於非活躍狀態的連線而導致socket連線斷連,因此需要透過輪詢告訴網路,該連線處於活躍狀態。
而http連線使用的是“請求——響應”的方式,不僅請求時需要先建立連線,而且需要客戶端向伺服器發出請求後,伺服器端才能回覆資料。
很多情況下,需要伺服器端主動向客戶端推送資料,保持客戶端與伺服器資料的實時與同步。此時若雙方建立的是socket連線,伺服器就可以直接將資料傳回給客戶端;若雙方建立的是http連線,則伺服器需要等到客戶端傳送一次請求後才能將資料傳回給客戶端,因此,客戶端需定時向伺服器端傳送連線請求,不僅可以保持線上,同事也是在“詢問”伺服器是否有新的資料,如果有就傳給客戶端。