有時候還會有老鐵在考慮在什麼樣的環境下使用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鏈結上傳送多個請求,但是只有響應是有順序的,只有上乙個請求完成後,下乙個才能響應。一旦有任務處理超時等...