網上關于WebSocket的文章已經很多了,有些總結的也非常不錯,這里就不在整理了,只是將我在學習的過程中感覺比較不錯的文章列出來,供以后查看,同時也非常感謝這些大牛的無私分享:
其中關于 Socket與WebSocket
的一些區別我感覺下面的這個說法還是比較便于理解的:
首先澄清一點,Socket與WebSocket處于的網絡層級是不對等的,很難直接比較。WebSocket在網絡七層協議上的層級等同于Http,而Socket位置處于七層協議中的第四層,Socket是操作系統對TCP、UDP的封裝。WebSocket處在上層,Socket處在下層,WebSocket依賴于Socket,Socket為WebSocket服務。
那么應該是拿WebSocket與Http進行比較。WebSocket常見于客戶端-服務端全雙工的場景,客戶端可以發送消息給服務端,同時服務端也可以主動發送消息給客戶端。而Http是單向的關系。只能客戶端發送請求,服務端被動接收,服務端沒有主動發起對話的能力。
聊天是一個典型的全雙工場景:聊天的雙方先將消息發送給服務端,服務端在把消息轉給對方。如果使用WebSocket,得益于全雙工,整個邏輯非常順暢。而Http場景下,服務端沒有主動發起請求的能力,只能維持Http長鏈接,或者客戶端定時輪詢服務端,獲取最新的信息。