您好,登錄后才能下訂單哦!
這篇文章主要介紹“WebSocket API怎么使用”,在日常操作中,相信很多人在WebSocket API怎么使用問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”WebSocket API怎么使用”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
屬性
WebSocket有兩個屬性,分別是readyState和bufferedAmount,其中bufferedAmount是作為連接緩沖用的,而WebSocket服務的readyState一共有以下4種狀態。
? CONNECTING(值為數字0)。表示正在連接,尚未連接成功,這里有一個網絡通信的握手過程。
注意,任何一個連接開始的時候,其狀態都必須是CONNECTING=0。如果ready-State一直是CONNECTING狀態,就會報出INVALID_STATE_ERR異常。
? OPEN(值為數字1)。表示連接已經成功,可以通信了。這里的連接是長連接、持久連接。
? CLOSING(值為數字2)。表示連接準備被斷開,握手將被取消。
? CLOSED(值為數字3)。表示連接已經斷開,可以從服務器端斷開,也可以從客戶端斷開。
URL
URL屬性都是一樣的,哪怕是訪問同源網站(這里的URL地址必須是絕對地址)。例如:
var Socket = new WebSocket('ws://www.test.com/');
哪怕本身這個發起WebSocket連接的地址就是www.test.com,也必須以ws://www.test.com為連接目標,否則就是錯誤的。
以下三種形式都是錯誤的:
var Socket = new WebSocket('/');
var Socket = new WebSocket('C:\www.test.com');
var Socket = new WebSocket('http://www.test.com');
以下兩種形式都是允許的、正確的:
var Socket = new WebSocket('ws://www.test.com/updates');
var Socket = new WebSocket('ws://www.test.com/updates:8080');
事件
具體的事件說明如下,其中send()方法基于成功的連接傳送數據,其參數必須是字符串(string)格式。
事件句柄 事件類型 解釋
onopen open 連接打開
onmessage message 用于接受從服務器傳來的信息
onerror error 當出現連接中的各種錯誤時,用于容錯處理和排查
onclose close 連接關閉或斷開
send send 基于成功的連接傳送數據
這里需要注意,bufferedAmount屬性作為還沒有發送到網絡中的最后一個待執行的事件輪詢任務,必須返回正在隊列中的(準備發送出去的)基于UTF-8格式文本的字節數量。(這包括在當前任務的執行中發送的文本,不論客戶端是否能夠異步傳輸文本。)
如果連接是關閉的,這個屬性的值將僅增加每次使用send方法帶來的數字變化(一旦連接關閉,該數字不能被初始化為0)。
在下面這個簡單的例子中,bufferedAmount屬性用于確保能夠保持在每50ms一次更新的頻率(如果網絡能保持這個速率),如果這個速率太快,那么采用其他能夠有保證的速率也可以:
var Socket = new WebSocket('ws://www.test.com:12010/updates');
Socket.onopen = function(){
setInterval(function(){
if(Socket.bufferedAmount == 0)
Socket.send(getUpdateData());
}, 50);
};
到此,關于“WebSocket API怎么使用”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。