WebSocket 和HTTP的區別及原理

2021-08-21 16:47:02 字數 1477 閱讀 3954

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

websocket和http的區別

協議是用在應用層的協議,他是基於

tcp協議的,

協議建立鏈結也必須要有三次握手才能傳送資訊。

鏈結分為短鏈結,長鏈結,短鏈結是每次請求都要三次握手才能傳送自己的資訊。即每乙個

request

對應乙個

response

。長鏈結是在一定的期限內保持鏈結。保持tcp連線不斷開。客戶端與伺服器通訊,必須要有客戶端發起然後伺服器返回結果。客戶端是主動的,伺服器是被動的。 

websocket

他是為了解決客戶端發起多個

請求到伺服器資源瀏覽器必須要經過長時間的輪訓問題而生的,他實現了多路復用,他是全雙工通訊。在

websocket

協議下客服端和瀏覽器可以同時傳送資訊。

建立了wensocket

之後伺服器不必在瀏覽器傳送

request

請求之後才能傳送資訊到瀏覽器。這時的伺服器已有主動權想什麼時候發就可以傳送資訊到伺服器。而且資訊當中不必在帶有

head

的部分資訊了與

的長鏈結通訊來說,這種方式,不僅能降低伺服器的壓力。而且資訊當中也減少了部分多餘的資訊。

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

,碼了這麼多

…今天就說到這裡咯。

Websocket和http的區別

websocket websocket協議解決了伺服器與客戶端全雙工通訊的問題。注 什麼是單工 半雙工 全工通訊?資訊只能單向傳送為單工 資訊能雙向傳送但不能同時雙向傳送稱為半雙工 資訊能夠同時雙向傳送則稱為全雙工。websocket協議解析 wensocket協議包含兩部分 一部分是 握手 一部分...

理清 WebSocket 和 HTTP 的關係

基本上但凡提到websocket和http的關係都會有以下兩條 websocket和http都是基於tcp協議的兩個不同的協議 websocket依賴於http連線 websocket依賴於http連線,那麼它如何從連線的http協議轉化為websocket協議?websocket為什麼要依賴於ht...

http中長連線和websocket的長連線的區別

http是乙個應用層協議,無狀態的,埠號為80。主要的版本有1.0 1.1 2.0.http 1.一次請求 響應,建立乙個連線,用完關閉 http 1.1 序列化單執行緒處理,可以同時在同乙個tcp鏈結上傳送多個請求,但是只有響應是有順序的,只有上乙個請求完成後,下乙個才能響應。一旦有任務處理超時等...