標籤:用戶端 首部 表示 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