Websocket和Socket.io的區別及應用


一、WebSocket

Websocket是HTML5新增的一種全雙工通信協議,客戶端和服務端基於TCP握手連接成功后,兩者之間就可以建立持久性的連接,實現雙向數據傳輸。

傳統HTTP和Websocket的異同
不同點

  1. HTTP是單向數據流,客戶端向服務端發送請求,服務端響應並返回數據;Websocket連接后可以實現客戶端和服務端雙向數據傳遞。
  2. 由於是新的協議,HTTP的url使用"http//"或"https//"開頭;Websocket的url使用"ws//"開頭或"wss//"開頭。

相同點

  1. 都需要建立TCP連接
  2. 都是屬於七層協議中的應用層協議

傳統通過HTTP請求模擬雙向數據傳遞的方式是http+Polling(輪詢)和http+Long Polling(長輪詢)。

輪詢(Polling)就是客戶端定時發送get請求向服務端請求數據,這種方式能滿足一定的需求,但是存在一些問題,如果服務端沒有新數據,但是客戶端get請求到的數據都是舊數據,這樣不僅浪費了帶寬資源,而且占用CPU內存。

LongPolling(長輪詢)就是在Polling上的一些改進,即如果服務端沒有新數據返回給客戶端,服務端會把當前的這個get請求保持住(hold),當有新數據時則返回新數據,如果超過一定時間服務端仍沒有新數據,則服務端返回超時請求,客戶端接收到超時請求,然后在發送get請求,一直循環執行。

二、Socket.io

Socket.io不是Websocket,它只是將Websocket和輪詢 (Polling)機制以及其它的實時通信方式封裝成了通用的接口,並且在服務端實現了這些實時機制的相應代碼。

也就是說,Websocket僅僅是 Socket.io實現實時通信的一個子集。因此Websocket客戶端連接不上Socket.io服務端,當然Socket.io客戶端也連接不上Websocket服務端。

感謝

作者:vinterx
鏈接:https://www.jianshu.com/p/970dcfd174dc
來源:簡書


免責聲明!

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



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