WebSocket 和HTTP的區別及原理


  有時候還會有老鐵在考慮在什么樣的環境下使用WebSocket,什么樣的環境下使用HTTP,今天我們來說下WebSocket和HTTP。

 

  WebSocket和HTTP的區別

 

  http協議是用在應用層的協議,他是基於tcp協議的,http協議建立鏈接也必須要有三次握手才能發送信息。

  http鏈接分為短鏈接,長鏈接,短鏈接是每次請求都要三次握手才能發送自己的信息。即每一個request對應一個response。長鏈接是在一定的期限內保持鏈接。保持TCP連接不斷開。客戶端與服務器通信,必須要有客戶端發起然后服務器返回結果。客戶端是主動的,服務器是被動的。 

  WebSocket他是為了解決客戶端發起多個http請求到服務器資源瀏覽器必須要經過長時間的輪訓問題而生的,他實現了多路復用,他是全雙工通信。在webSocket協議下客服端和瀏覽器可以同時發送信息。

  建立了WenSocket之后服務器不必在瀏覽器發送request請求之后才能發送信息到瀏覽器。這時的服務器已有主動權想什么時候發就可以發送信息到服務器。而且信息當中不必在帶有head的部分信息了與http的長鏈接通信來說,這種方式,不僅能降低服務器的壓力。而且信息當中也減少了部分多余的信息。

 

  HTTP的長連接與websocket的持久連接

 

  HTTP1.1的連接默認使用長連接(persistent connection),

即在一定的期限內保持鏈接,客戶端會需要在短時間內向服務端請求大量的資源,保持TCP連接不斷開。客戶端與服務器通信,必須要有客戶端發起然后服務器返回結果。客戶端是主動的,服務器是被動的。

  在一個TCP連接上可以傳輸多個Request/Response消息對,所以本質上還是Request/Response消息對,仍然會造成資源的浪費、實時性不強等問題。

如果不是持續連接,即短連接,那么每個資源都要建立一個新的連接,HTTP底層使用的是TCP,那么每次都要使用三次握手建立TCP連接,即每一個request對應一個response,將造成極大的資源浪費。

  長輪詢,即客戶端發送一個超時時間很長的Request,服務器hold住這個連接,在有新數據到達時返回Response

websocket的持久連接

  只需建立一次Request/Response消息對,之后都是TCP連接,避免了需要多次建立Request/Response消息對而產生的冗余頭部信息。

  

  希望講了這么多能夠幫助大家更加深入的去了解WebSocket和HTTP之間的區別和聯系。如果覺得還是沒有理解可以試試用一下第三方WebSocket服務,類似GoEasy這種免費的,大家可以去了解一下。網站好像是www.goeasy.io,碼了這么多…今天就說到這里咯。


免責聲明!

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



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