前端js解析websocket推送的gzip压缩json的Blob数据

主要依赖插件pako https://www.npmjs.com/package/pako

1、安装

npm install pako

2、使用, pako.inflate(reader.result, {to: "string"}) 解压后的string 对象,需要JSON.parse转成json

  this.ws.onmessage = (evt) => {
        console.log("websocket推送=====",evt.data instanceof Blob)
        var messageData = evt.data;
        try {
// S 解压主要代码
          if(evt.data instanceof Blob){
              let reader = new FileReader();
              reader.readAsArrayBuffer(evt.data, "utf-8");
              reader.onload =() =>{
                // 对数据进行解压
                messageData = pako.inflate(reader.result, {to: "string"})
               console.log("解析压缩",messageData)
              }
          }
// E 解压主要代码

        } catch (error) {
          console.log("推送报错-blob",error)
        }



....

3、使用发现解析压缩会存在异步,导致解压未完成后续代码执行会报错,优化

// 解析websocket推送的gzip blob数据to json
const pakoUngzipToJson = (messageData) => {
  return new Promise((resolve, reject) => {
    try {
      let reader = new FileReader();
      reader.readAsArrayBuffer(messageData, "utf-8");
      reader.onload = () => {
        // 对数据进行解压
        let ungzipData = pako.inflate(reader.result, { to: "string" });
        resolve(ungzipData);
      };
    } catch (error) {
      console.log("推送解析报错-blob", error);
      reject(error);
    }
  });
};


//使用

 receive: async (message) => {
    var messageData = message.data;
    if(messageData instanceof Blob){
      console.time("解析数据gzip-web")
      messageData = await pakoUngzipToJson(messageData)
      console.timeEnd("解析数据gzip-web")
    }

    var params = JSON.parse(messageData);

......

相关推荐

  1. 前端js解析websocketgzip压缩jsonBlob数据

    2024-06-07 22:12:06       10 阅读
  2. WebSocket实现数据实时

    2024-06-07 22:12:06       37 阅读
  3. golang --gin+websocket实现指定数据

    2024-06-07 22:12:06       35 阅读
  4. WebSocket定时前端:深度解析与实战挑战

    2024-06-07 22:12:06       7 阅读
  5. js获取blob格式json对象

    2024-06-07 22:12:06       7 阅读
  6. zlib --- 与 gzip 兼容压缩

    2024-06-07 22:12:06       36 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-07 22:12:06       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-07 22:12:06       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-07 22:12:06       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-07 22:12:06       20 阅读

热门阅读

  1. C语言实现三角波生成

    2024-06-07 22:12:06       8 阅读
  2. css 清除伪类active,hover效果

    2024-06-07 22:12:06       9 阅读
  3. SHELL脚本学习(五)用户输入

    2024-06-07 22:12:06       11 阅读
  4. Python | 排队取奶茶

    2024-06-07 22:12:06       8 阅读
  5. 23 种设计模式详解(全23种)

    2024-06-07 22:12:06       11 阅读
  6. Lua 基础 04 模块

    2024-06-07 22:12:06       9 阅读
  7. 调用第三方API --------------Python篇

    2024-06-07 22:12:06       7 阅读