WebSocket是單個TCP連接上進行全雙工通信的協議 在WebSocket的API中,客戶端與伺服器只需要進行一次握手就可以保持持久的連接,並可以雙向傳輸數據 與HTTP不同的是,WebSocket需要先創建連接,連接成功之後就可以進行通信,而且通信時,請求頭部可以減少部分狀態信息 創建WebS ...
WebSocket是單個TCP連接上進行全雙工通信的協議
在WebSocket的API中,客戶端與伺服器只需要進行一次握手就可以保持持久的連接,並可以雙向傳輸數據
與HTTP不同的是,WebSocket需要先創建連接,連接成功之後就可以進行通信,而且通信時,請求頭部可以減少部分狀態信息
創建WebSocket對象:const Socket = new WebSocket(url, [protocol]) url就是需要連接的url,protocol是子協議(可選)
WebSocket協議的屬性,事件與方法有如下:
屬性: readyState (Socket.readyState)
0:連接尚未創建
1:已創建連接,可以進行通信
2:連接正在關閉
3:連接已關閉,或連接無法打開
bufferedAmount-----只讀,表示已被send()放入隊列中等待傳輸,但UTF-8文本位元組數未發出
事件: open (Socket.onopen) 連接建立成功時觸發(可以進行數據傳輸)
message (Socket.onmessage) 客戶端接受伺服器數據時觸發 (可以處理伺服器傳輸過來的數據)
error (Socket.onerror) 通信發生錯誤時觸發
close (Socket.close) 連接關閉成功時觸發
方法: send() (Socket.send()) 客戶端與伺服器傳輸數據時使用的方法
close() (Socket.close()) 關閉連接
關閉WebSocket連接時,需要客戶端與伺服器一起斷開,可以由客戶端發起關閉,也可以由伺服器發起關閉
客戶端發起關閉: 由客戶端調用close()方法,這個操作會向伺服器發起斷開連接的請求,伺服器接收到這個請求後斷開TCP連接
伺服器發起關閉: 由伺服器向客戶端發起斷開連接的請求,這個請求可以傳輸一些信息過來,比如狀態碼,客戶端會觸發close事件,這時就可以調用close()來斷開連接了