摘錄自以下網(wǎng)頁,如需了解詳情請看原作者:
很多了解了http協(xié)議的同學(xué)看到了web-socket估計會有疑問,這是個什么東東?這個協(xié)議是干嘛的狮含,有什么好處?
答案就是:http協(xié)議有個缺陷,通信只能由客戶端發(fā)起赛蔫!
舉個栗子:我要查詢天氣只能由我向服務(wù)器發(fā)送請求裤唠,服務(wù)器返回查詢結(jié)果
problems with http:
- one-way
- request/response
- stateless
- half-duplex protocol--半雙工協(xié)議
這種單向請求的特點(diǎn)挤牛,注定了如果服務(wù)器有連續(xù)的狀態(tài)變化,客戶端要獲知就非常麻煩种蘸。我們只能使用"輪詢":每隔一段時候墓赴,就發(fā)出一個詢問,了解服務(wù)器有沒有新的信息航瞭。最典型的場景就是聊天室诫硕。
輪詢的效率低,非常浪費(fèi)資源(因為必須不停連接刊侯,或者 HTTP 連接始終打開)章办。因此,工程師們一直在思考滨彻,有沒有更好的方法藕届。WebSocket 就是這樣發(fā)明的。
web-socket
最大特點(diǎn):可以主動向客戶端推送信息亭饵,雙向平等對話
http and socket.png
其他特性:
- 建立在tcp協(xié)議之上
- 良好兼容http休偶,默認(rèn)端口也是80和443
- 數(shù)據(jù)格式輕量
- 可發(fā)送文本/二進(jìn)制數(shù)據(jù)
- 沒有同源限制,客戶端可與任意服務(wù)器通信
- 協(xié)議標(biāo)識符 ws冬骚,加密時是 wss
compare.jpg
conclusion:
WebSocket 解決了客戶端和服務(wù)器的一些即時通訊問題椅贱,減少輪詢寫起網(wǎng)頁 app 確實(shí)方便不少