websocket和socketio的總結


1、WebSocket是什么?

WebScoket是一種讓客戶端和服務器之間能進行雙向實時通信的技術。它是HTML最新標准HTML5的一個協議規范,本質上是個基於TCP的協議,它通過HTTP/HTTPS協議發送一條特殊的請求進行握手后創建了一個TCP連接,此后瀏覽器/客戶端和服務器之間便可以通過此連接來進行雙向實時通信。

2、為什么要用WebSocket?

1)一直以來,HTTP協議是無狀態、單向通信的,即客戶端請求一次,服務器回復一次。如果想讓服務器消息及時下發到客戶端,需要采用類似於輪詢的機制,即客戶端定時頻繁的向服務器發出請求,這樣效率很低,而且HTTP數據包頭本身的字節量較大,浪費了大量帶寬和服務器資源;

2)為提高效率,出現了AJAX/Comet技術,它實現了雙向通信且節省了一定帶寬,但仍然需要發出請求,本質上仍然是輪詢;

3)新一代HTML標准HTML5推出了WebSocket技術,它使客戶端和服務器之間能通過HTTP協議建立TCP連接,之后便可以隨時隨地進行雙向通信,且交換的數據包頭信息量很小;

3、如何使用WebSocket?

在支持WebSocket的瀏覽器中,創建Socket之后,通過onopen、onmessage、onclose、onerror四個事件的實現來處理Socket的響應;

4、WebSocket與HTTP、TCP的關系

WebSocket和HTTP都屬於應用層協議,且都是基於TCP的,它們的send函數最終也是通過TCP系統接口來做數據傳輸。那么WebSocket和HTTP的關系呢?WebSocket在建立握手連接時,數據是通過HTTP協議傳輸的,但是在連接建立后,真正的數據傳輸階段則不需要HTTP協議的參與。它們之間的關系如下圖:

5、什么情況下使用WebSocket?

如果游戲需要同時支持手機端、Web端,那毫無疑問應該使用WebSocket,現在各個平台都提供了相應的WebSocket實現。如果游戲不需要支持Web端,且對實時性要求比較高,如多人射擊、MMORPG之類,那么使用TCP/UDP結合的原生Socket會比較好。

6、SocketIO

WebSocket是HTML5最新提出的規范,雖然主流瀏覽器都已經支持,但仍然可能有不兼容的情況,為了兼容所有瀏覽器,給程序員提供一致的編程體驗,SocketIO將WebSocket、AJAX和其它的通信方式全部封裝成了統一的通信接口,也就是說,我們在使用SocketIO時,不用擔心兼容問題,底層會自動選用最佳的通信方式。因此說,WebSocket是SocketIO的一個子集。

更多見:https://blog.csdn.net/u014042372/article/details/79820535


免責聲明!

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



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