JavaScript中的二进制数据ArrayBuffer的应用

            let str = JSON.stringify(obj);
            console.log(str)
            var buff = new TextEncoder().encode(str);
            websocket.send(codeBuffer(buff));
            console.log("发送数据")

把字符串转成二进制数据流 发送

接受到数据的时候需要用Uint8Array来接受,服务端发回来的是一个

ArrayBuffer,用下面的代码接

                var view = new  Uint8Array(buffer);
                var data = codeBuffer(view);
                let x = new TextDecoder().decode(data);
                console.log(x)

这个Uint8Array有很多种(Uint8Array Uint16Array Uint32Array),这个Uint8Array也可以用Int8Array Int16Array Int32Array 来代替效果一样的看需求.

本需求主要用在自己项目里面

 websocket = new WebSocket(wsUrl);
        websocket.onopen = function (evt) {
            //发送数据前要加密
            websocket.binaryType = "arraybuffer";
            let obj = {
                "C2S_TXLogin": {
                    "ChanName": "",
                    "Platform": "h5",
                    "Channel": "",
                    "Uin": "12345678"
                }
            }
            let str = JSON.stringify(obj);
            console.log(str)
            var buff = new TextEncoder().encode(str);
            websocket.send(codeBuffer(buff));
            console.log("发送数据")
        };

        websocket.onclose = function (evt) {
            console.log("关闭socket")
            console.log(evt)
        };

        websocket.onmessage = function (evt) {
            var buffer = evt.data;
            console.log("接受数据0")
            console.log(buffer)
            if (evt.data instanceof ArrayBuffer) {
                var view = new  Uint8Array(buffer);
                var data = codeBuffer(view);
                let x = new TextDecoder().decode(data);
                console.log(x)
            }
        };
        websocket.onerror = function (evt) {
            console.log("错误")
        };

猜你喜欢

转载自blog.csdn.net/u010243607/article/details/88219522
今日推荐