1.關於WebSocket對象,他的協議頭不是http://,而是ws://
服務器傳遞到客戶端的數據可能是字符串,所以我們要判斷一下,是否數據是字符串
也可能是二進制的數據,(blob或者是arraybuffor),一個websocket只能接收一種二進制數據,要麼是blob,要麼是arraybuffer,但是默認是blob,但是我們可以通過 WebSocket對象的一個屬性binaryType指定接收的二進制類型。ws.binaryType="arraybuffer"; 那麼這時指定接收的二進制數據就是ArrayBuffer
2.ArrayBuffer
var bf = new ArrayBuffer(4); //ArrayBuffer是存放二進制數據的數組,這裏的參數4是指創建的數組長度是4個字節。
bf.typeLength //ArrayBuffer對象數組有一個參數,typeLength。表示給數組分配的字節長度
要注意一點,這個二進制數組創建時分配的內存是連續的,如果要求的內存比較大,那麼可能分配不成功,所以我們使用他時我們要檢驗一下
3.DataView
服務器傳來的二進制數據中包含了多種數據類型,二進制數組ArrayBuffer自身不能進行操作(讀取,設置),我們可以把它傳入DataView對象進行操作
var dv = new DataView(bf);
dv.getInt32(pos,true); //從ArrayBuffer數組的下標處開始讀取一個32位二進制數,轉化爲整數
dv.set(pos,1,true); //在ArrayBuffer數組的pos下標處開始設置一個32位二進制,把1轉化成二進制