websocket大量信息传输的优化---使用文本压缩

背景:
后端传输给我大量的geojson数据,造成卡顿。大的时候为500w+字节数
优化方向:后端将JSON转化为二进制文件并压缩然后发给前端。
前端如何处理:

        //定义websocket
        const socket = new WebSocket('ws://192.168.2.206:8002/getModelData?pushType=realtime&displayType=2D');
        socket.binaryType = 'arraybuffer' // 设置消息类型为二进制
        socket.addEventListener('message', event => {
            const arrayBuffer = event.data;
            const inflate = new pako.Inflate({ to: 'string' });
            inflate.push(arrayBuffer);
            if (inflate.err) {
                console.error(inflate.msg);
                return;
            }
            const jsonString = inflate.result;
            const data = JSON.parse(jsonString);
            map.getSource('route').setData(data);
        });

用到的依赖为pako.js库地址为在线cdn地址
也可以使用npm下载 npm install pako
然后使用

import pako from "pako";
 //arrayBuffer为websocket传过来的文件
 if (arrayBuffer) {
        const inflate = new pako.Inflate({ to: "string" });
        inflate.push(arrayBuffer);
        if (inflate.err) {
          console.error(inflate.msg);
          return;
        }
        const jsonString = inflate.result;
        const data = JSON.parse(jsonString);
        //data为转化后的json
 }

在这里插入图片描述

需要注意 定义websocket实例后一定要加上socket.binaryType = 'arraybuffer' 这行代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值