赞
踩
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转化成二进制
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。