http的長連接和websocket的區別


一、什么是http協議

HTTP是一個應用層協議,無狀態的,端口號為80。主要的版本有1.0/1.1/2.0.
 
  • HTTP/1.* 一次請求-響應,建立一個連接,用完關閉;
  • HTTP/1.1 串行化單線程處理,可以同時在同一個tcp鏈接上發送多個請求,但是只有響應是有順序的,只有上一個請求完成后,下一個才能響應。一旦有任務處理超時等,后續任務只能被阻塞(線頭阻塞);
  • HTTP/2 並行執行。某任務耗時嚴重,不會影響到任務正常執行
 

二、什么是websocket

 
Websocket是html5提出的一個協議規范,是為解決客戶端與服務端實時通信。本質上是一個基於tcp,先通過HTTP/HTTPS協議發起一條特殊的http請求進行握手后創建一個用於交換數據的TCP連接。
 
WebSocket優勢: 瀏覽器和服務器只需要要做一個握手的動作,在建立連接之后,雙方可以在任意時刻,相互推送信息。同時,服務器與客戶端之間交換的頭信息很小。
 

三、什么是長連接、短連接

 
  • 短連接:
連接->傳輸數據->關閉連接
HTTP是無狀態的,瀏覽器和服務器每進行一次HTTP操作,就建立一次連接,但任務結束就中斷連接。
也可以這樣說:短連接是指SOCKET連接后發送后接收完數據后馬上斷開連接。
 
  • 長連接、
連接->傳輸數據->保持連接 -> 傳輸數據-> 。。。 ->關閉連接。
長連接指建立SOCKET連接后不管是否使用都保持連接,但安全性較差。
 
 

四、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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM