關於WebSocket協議

yezi-dream發表於2018-08-26

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

 

相關文章