網路通訊-----使用瀏覽器進行全雙工通訊的 WebSocket
利用 Ajax 和 Comet 技術進行通訊可以提升 Web 的瀏覽速度。 但問題在於通訊若使用 HTTP 協議, 就無法徹底解決瓶頸問題。 WebSocket網路技術正是為解決這些問題而實現的一套新協議及 API。當時籌劃將 WebSocket 作為 HTML5 標準的一部分, 而現在它卻逐漸變成了獨立的協議標準。 WebSocket 通訊協議在 2011 年 12 月 11 日,被 RFC 6455 - The WebSocket Protocol 定為標準。
1.WebSocket 的設計與功能
WebSocket, 即 Web 瀏覽器與 Web 伺服器之間全雙工通訊標準。 其中, WebSocket 協議由 IETF 定為標準, WebSocket API 由 W3C 定為標準。 仍在開發中的 WebSocket 技術主要是為了解決 Ajax 和 Comet裡 XMLHttpRequest 附帶的缺陷所引起的問題。
2.WebSocket 協議
一旦 Web 伺服器與客戶端之間建立起 WebSocket 協議的通訊連線,之後所有的通訊都依靠這個專用協議進行。 通訊過程中可互相傳送JSON、 XML、 HTML或圖片等任意格式的資料。由於是建立在 HTTP 基礎上的協議, 因此連線的發起方仍是客戶端,而一旦確立 WebSocket 通訊連線, 不論伺服器還是客戶端, 任意一方都可直接向對方傳送報文。 下面我們列舉一下 WebSocket 協議的主要特點。 a.推送功能 支援由伺服器向客戶端推送資料的推送功能。 這樣, 伺服器可直接傳送資料, 而不必等待客戶端的請求。 b.減少通訊量
Sec-WebSocket-Key 欄位內記錄著握手過程中必不可少的鍵值。
Sec-WebSocket-Protocol 欄位內記錄使用的子協議。子協議按 WebSocket 協議標準在連線分開使用時, 定義那些連線
的名稱。握手·
Sec-WebSocket-Accept 的欄位值是由握手請求中的 Sec-WebSocket-Key 的欄位值生成的。 成功握手確立 WebSocket 連線之後, 通訊時不再使用 HTTP 的資料幀, 而採用 WebSocket 獨立的資料幀。
WebSocket API
JavaScript 可呼叫“The WebSocket API”( http://www.w3.org/TR/websockets/, 由 W3C 標準制定) 內提供的 WebSocket 程式介面, 以實現 WebSocket 協議下全雙工通訊。 以下為呼叫 WebSocket API, 每 50ms 傳送一次資料的例項。
轉:《圖解HTTP》