当前位置: 首页 > news >正文

前端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);......

http://www.lryc.cn/news/369712.html

相关文章:

  • 【wiki知识库】06.文档管理接口的实现--SpringBoot后端部分
  • c,c++,go语言字符串的演进
  • vue-cli 快速入门
  • 机器人--矩阵运算
  • 期末复习【汇总】
  • 【IM即时通讯】MQTT协议的详解(3)- CONNACK Packet
  • Linux - 深入理解/proc虚拟文件系统:从基础到高级
  • Django DeleteView视图
  • 代码杂谈 之 pyspark如何做相似度计算
  • 混剪素材哪里找?分享8个热门素材网站
  • 临床应用的深度学习在视网膜疾病的诊断和转诊中的应用| 文献速递-视觉通用模型与疾病诊断
  • 中继器简介
  • websocket 前端项目js示例
  • webapi跨越问题
  • 你知道 npmrc 文档吗? ---- npmrc 关键作用介绍
  • 发现 Laravel 中的 api 响应时间明显过长
  • 如何在MySQL中创建不同的索引和用途?
  • maxwell同步mysql到kafka(一个服务器启动多个)
  • 实用软件分享---简单菜谱 0.3版本 几千种美食(安卓)
  • 网络学习(14)|RESTful API设计:构建优雅的Web服务
  • 【开源】APIJSON 框架
  • R语言探索与分析18-基于时间序列的汇率预测
  • 30岁迷茫?AI赛道,人生新起点
  • 开门预警系统技术规范(简化版)
  • Django与MySQL:配置数据库的详细步骤
  • GPT-4o short description
  • MATLAB 矩阵
  • LED灯的功率以及好的品牌推荐
  • Linux “ 软件管理 “
  • 【uni-app】申请高德地图key,封装map.js,实现H5、iOS、Android通过getlocation获取地图定位信息