簡單了解一下 WebSocket
現在,很多網站為了實現推送技術,所用的技術都是輪詢。輪詢是在特定的的時間間隔(如每1秒),由瀏覽器對服務器發(fā)出HTTP請求,然后由服務器返回最新的數據給客戶端的瀏覽器。這種傳統(tǒng)的模式帶來很明顯的缺點,即瀏覽器需要不斷的向服務器發(fā)出請求,然而HTTP請求可能包含較長的頭部,其中真正有效的數據可能只是很小的一部分,顯然這樣會浪費很多的帶寬等資源。
在這種情況下,HTML5定義了WebSocket協(xié)議,能更好的節(jié)省服務器資源和帶寬,并且能夠更實時地進行通訊。
WebSocket一種在單個 TCP 連接上進行全雙工通訊的協(xié)議。使得客戶端和服務器之間的數據交換變得更加簡單,允許服務端主動向客戶端推送數據。在 WebSocket API 中,瀏覽器和服務器只需要完成一次握手,兩者之間就直接可以創(chuàng)建持久性的連接,并進行雙向數據傳輸。
以上信息摘自維基百科(https://zh.wikipedia.org/wiki/WebSocket)
簡單點說,WebSocket 就是減小客戶端與服務器端建立連接的次數,減小系統(tǒng)資源開銷,只需要一次 HTTP 握手,整個通訊過程是建立在一次連接/狀態(tài)中,也就避免了HTTP的非狀態(tài)性,服務端會一直與客戶端保持連接,直到你關閉請求,同時由原本的客戶端主動詢問,轉換為服務器有信息的時候推送。當然,它還能做實時通信、更好的二進制支持、支持擴展、更好的壓縮效果等這些優(yōu)點。
推薦一個知乎上叫 Ovear 的網友關于 WebSocket 原理的回答,嘻哈風格科普文,簡直不要更贊了!地址:https://www.zhihu.com/question/20215561/answer/40316953