HTML5之WebSocket

來源:互聯網
上載者:User

標籤:用戶端   首部   表示   ebs   message   上進   tar   close   響應   

  什麼是WebSocket? WebSocket一種在單個 TCP串連上進行全雙工系統通訊的協議。即WebSocket是一個協議。

  比較通俗的理解,我們可以點擊這裡。

 

第一部分:WebSocket的特點
  • 通過TCP一次握手就可以建立串連。  而HTTP協議需要三向交握。
  • HTTP中伺服器永遠是被動的,即每次只有用戶端發出請求,伺服器才會響應。 但是WebSocket協議中,伺服器是可以主動的向用戶端傳遞資料。這樣就避免了輪詢的問題。
  • WebSocket需要瀏覽器、伺服器同時支援才可以使用,而http協議是普遍支援的。 且WebSocket是一種新的協議,只是目前為了相容性,必須要建立在http的基礎上發起請求,如只用WebSocket協議名將不再是http:而是ws:。
  • 同樣地,WebSocket也是基於TCP協議的。

 

第二部分: 基礎知識

  當我們擷取了WebSocket串連之後,我們就可以通過send()方法來向伺服器發送資料,並通過onmessage事件來接收伺服器返回的資料。下面的api用於建立一個Websocket對象。

  var Socket = new WebSocket(url, [protocol]);

  其中第一個參數是需要串連的url,後一個參數是可選的,制定可以接受的子協議。

    

WebSocket相關屬性

  即我們建立了Socket對象之後,它會有一個readyState屬性(這個和xhr的屬性同名),取值如下:

0     表示串連尚未建立

1     表示串連已經建立,可以進行通訊

2     表示串連正在進行關閉

3     表示串連已經關閉或者串連不能開啟

 

WebSocket方法

  WebSocket中只有兩個方法,一個是使用串連發送資料,即Socket.send(),另一個就是關閉串連,即Socket.close()。

  注意:在xhr中是沒有close相關方法的,因為一次請求一次響應的方式使得其無需close。

 

WebSocket 事件

 

  

第三部分:WebSocket執行個體

  在建立一個WebSocket串連的時候,用戶端瀏覽器首先向伺服器發送一個http請求,這個請求和普通的http請求不同,因為在首部欄位中包含了Upgrade: WebSocket; 這表明這是一個申請升級為WebSocket協議的http請求, 伺服器解析這些附加的頭資訊然後產生了應答資訊返回給用戶端,用戶端和服務端的WebSocket串連就建立起來了,雙方就可以使用這個串連進行自由的傳遞資訊,並且這個串連會持續存在到用戶端或者伺服器端的某一方主動的關閉串連。

 

 

  

 

https://www.zhihu.com/question/20215561

HTML5之WebSocket

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.