http中長鏈接和websocket的長鏈接的區別

1、什麼是http協議
HTTP是一個應用層協議,無狀態的,端口號爲80。主要的版本有1.0/1.1/2.0.
 
  • HTTP/1.* 一次請求-響應,創建一個鏈接,用完關閉;
  • HTTP/1.1 串行化單線程處理,能夠同時在同一個tcp連接上發送多個請求,可是隻有響應是有順序的,只有上一個請求完成後,下一個才能響應。一旦有任務處理超時等,後續任務只能被阻塞(線頭阻塞);
  • HTTP/2 並行執行。某任務耗時嚴重,不會影響到任務正常執行
 
2、什麼是websocket
 
Websocket是html5提出的一個協議規範,是爲解決客戶端與服務端實時通訊。本質上是一個基於tcp,先經過HTTP/HTTPS協議發起一條特殊的http請求進行握手後建立一個用於交換數據的TCP鏈接。
 
WebSocket優點: 瀏覽器和服務器只須要要作一個握手的動做,在創建鏈接以後,雙方能夠在任意時刻,相互推送信息。同時,服務器與客戶端之間交換的頭信息很小。
 
3、什麼是長鏈接、短鏈接
 
  • 短鏈接:
鏈接->傳輸數據->關閉鏈接
HTTP是無狀態的,瀏覽器和服務器每進行一次HTTP操做,就創建一次鏈接,但任務結束就中斷鏈接。
也能夠這樣說:短鏈接是指SOCKET鏈接後發送後接收完數據後立刻斷開鏈接。
 
  • 長鏈接、
鏈接->傳輸數據->保持鏈接 -> 傳輸數據-> 。。。 ->關閉鏈接。
長鏈接指創建SOCKET鏈接後無論是否使用都保持鏈接,但安全性較差。
 
 
4、http和websocket的長鏈接區別
 
HTTP1.1經過使用Connection:keep-alive進行長鏈接,HTTP 1.1默認進行持久鏈接。在一次 TCP 鏈接中能夠完成多個 HTTP 請求,可是對每一個請求仍然要單獨發 header,Keep-Alive不會永久保持鏈接,它有一個保持時間,能夠在不一樣的服務器軟件(如Apache)中設定這個時間。這種長鏈接是一種「僞連接」
websocket的長鏈接,是一個真的全雙工。長鏈接第一次tcp鏈路創建以後,後續數據能夠雙方都進行發送,不須要發送請求頭。
 
keep-alive雙方並無創建正真的鏈接會話,服務端能夠在任何一次請求完成後關閉。WebSocket 它自己就規定了是正真的、雙工的長鏈接,兩邊都必需要維持住鏈接的狀態。
 
 
 
參考連接:
1.http和socket之長鏈接和短鏈接區別 https://www.jianshu.com/p/b68d2b26f5f4
相關文章
相關標籤/搜索