2013-10-03 49 views

回答

12

WebSocket是HTTP的擴展。對於低延遲通信,Web套接字更好。

還要檢查這個article

如何的WebSockets讓它如此之快?

爲了建立WebSocket連接,它們的初始握手期間從HTTP協議WebSocket協議客戶端和服務器的升級,如下面的例子所示: -

GET /text HTTP/1.1 
Upgrade: WebSocket 
Connection: Upgrade 
Host: www.websocket.org 

HTTP/1.1 101 WebSocket Protocol Handshake 
Upgrade: WebSocket 
Connection: Upgrade 
… 

一旦建立,WebSocket數據幀就可以在客戶端和客戶端之間來回發送e服務器處於全雙工模式。文本幀和二進制幀都可以同時以任何方向全雙工發送。數據只用兩個字節進行最小化。在文本框架的情況下,每個幀以0x00字節開始,以0xFF字節結束,並且包含兩者之間的UTF-8數據。 WebSocket文本框架使用終結符,而二進制框架使用長度前綴。

網絡套接字代表的網絡通信,一個 全雙工,通過在Web上單插槽工作 雙向通信信道的下一個演進。 HTML5 Web套接字提供了一個 真正的標準,您可以使用它來構建可伸縮的實時Web應用程序。另外,由於它向瀏覽器提供了原生 的套接字,因此它消除了Comet解決方案容易出現的許多問題。 Web套接字消除了開銷並顯着降低了複雜性。

潛伏期比較: -

enter image description here

摘要: -

網絡套接字提供的 的實時網絡擴展性前進了一大步。正如您在本文中看到的,HTML5 Web Sockets 可以提供500:1或 - 取決於HTTP標頭的大小 - 甚至可以減少不必要的HTTP標頭通信量的1000:1,並減少等待時間的3:1 。這不僅僅是一個漸進式的改進; 這是一次革命性的跳躍 - 一次飛躍!

+1

websockets的不足之處在於它們不遵循HTTP請求/響應的協議,如SPDY和即將到來的HTTP/2。0在很多人眼裏,因爲他們提供了許多相同的好處,但仍保留該語義更具吸引力(現貨例如上的差異的,所以從我+1拉胡爾) –

+0

@jessemcconnell: - 非常漂亮點爵士!儘管Web Sockets協議已準備好支持多種客戶端,但它還不能將原始二進制數據提交給JavaScript,因爲JavaScript不支持字節類型,所以還要從同一鏈接添加一個點。因此,如果客戶端是JavaScript,二進制數據將被忽略 - 但它可以傳送給支持它的其他客戶端。 –

+0

而我們的話題,自「彗星」是在對問題的標籤,我一般建議使用類似直接cometd.org您的通信總線,而不是說的WebSockets,因爲它可以自動選擇基於最佳方案是什麼瀏覽器和服務器支持,HTTP/2,SPDY,WS,HTTP/1.1長輪詢,即使HTTP/1.0輪詢和重新連接的支持也層,確保消息順序,等等等等 –