当前位置:   article > 正文

对于js中网络接口websocket,二进制数组arraybuffer,视图对象dataview学习记录。_js websocket blob arraybuffer

js websocket blob arraybuffer

1.关于WebSocket对象,他的协议头不是http://,而是ws:// 

服务器传递到客户端的数据可能是字符串,所以我们要判断一下,是否数据是字符串

onMessage: function ( evt )
    {
        if ( typeof ( evt . data ) == "string" )             //服务器传过来的可能是字符串,判断是不是
        {
            cc . log ( "typeof(evt.data)" );
        }
        else
        {
            cc . log ( evt . data );
            var dview = new DataView ( evt . data );
            var readPos = 0 ;
            var mainCode = dview . getUint16 ( readPos , true );  readPos += 2 ;
            var subCode = dview . getUint16 ( readPos , true );   readPos += 2 ;
            MahjongSocket . instances . onMsg ( mainCode , subCode , dview , readPos );
        }

    },

也可能是二进制的数据,(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转化成二进制

 

 

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/145055
推荐阅读
相关标签
  

闽ICP备14008679号