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()來斷開連線了