有時候還會有老鐵在考慮在什麼樣的環境下使用WebSocket,什麼樣的環境下使用HTTP,今天咱們來講下WebSocket和HTTP。web
WebSocket和HTTP的區別瀏覽器
http協議是用在應用層的協議,他是基於tcp協議的,http協議創建連接也必需要有三次握手才能發送信息。服務器
http連接分爲短連接,長連接,短連接是每次請求都要三次握手才能發送本身的信息。即每個request對應一個response。長連接是在必定的期限內保持連接。保持TCP鏈接不斷開。客戶端與服務器通訊,必需要有客戶端發起而後服務器返回結果。客戶端是主動的,服務器是被動的。 websocket
WebSocket他是爲了解決客戶端發起多個http請求到服務器資源瀏覽器必需要通過長時間的輪訓問題而生的,他實現了多路複用,他是全雙工通訊。在webSocket協議下客服端和瀏覽器能夠同時發送信息。socket
創建了WenSocket以後服務器沒必要在瀏覽器發送request請求以後才能發送信息到瀏覽器。這時的服務器已有主動權想何時發就能夠發送信息到服務器。並且信息當中沒必要在帶有head的部分信息了與http的長連接通訊來講,這種方式,不只能下降服務器的壓力。並且信息當中也減小了部分多餘的信息。tcp
HTTP的長鏈接與websocket的持久鏈接網站
HTTP1.1的鏈接默認使用長鏈接(persistent connection),spa
即在必定的期限內保持連接,客戶端會須要在短期內向服務端請求大量的資源,保持TCP鏈接不斷開。客戶端與服務器通訊,必需要有客戶端發起而後服務器返回結果。客戶端是主動的,服務器是被動的。資源
在一個TCP鏈接上能夠傳輸多個Request/Response消息對,因此本質上仍是Request/Response消息對,仍然會形成資源的浪費、實時性不強等問題。get
若是不是持續鏈接,即短鏈接,那麼每一個資源都要創建一個新的鏈接,HTTP底層使用的是TCP,那麼每次都要使用三次握手創建TCP鏈接,即每個request對應一個response,將形成極大的資源浪費。
長輪詢,即客戶端發送一個超時時間很長的Request,服務器hold住這個鏈接,在有新數據到達時返回Response
websocket的持久鏈接
只需創建一次Request/Response消息對,以後都是TCP鏈接,避免了須要屢次創建Request/Response消息對而產生的冗餘頭部信息。
但願講了這麼多可以幫助你們更加深刻的去了解WebSocket和HTTP之間的區別和聯繫。若是以爲仍是沒有理解能夠試試用一下第三方WebSocket服務,相似GoEasy這種免費的,你們能夠去了解一下。網站好像是www.goeasy.io,碼了這麼多…今天就說到這裏咯。