使用pako 进行数据压缩传输

pako 数据压缩和解压

最近使用了Luckysheet 表格功能,涉及到websocket 的数据传输,发现Luckysheet 使用了pako 对数据进行了压缩,遇到了一些问题

在前后端数据传输过程中,会遇到数据量比较大的问题,如大量表格,文档等数据的传输,因此可在前端使用pako 进行数据压缩传输给后端

pako 的封装器

API 文档

pako 2.1.0 API documentation

pako.gzip 方法会生成 Uint8Array 格式的数据

进行数据解析,二进制数据

deflate

inflate

版本问题

后端使用 2.0

前端是使用的1.0.5

两者方法不兼容

nodejs 中提供的

Zlib | Node.js v22.3.0 Documentation

数据编码问题,二进制格式

将文本字符串编码为一个有效的统一资源标识符 (URI)

相关参考

Please provide (minimal) client-side examples · Issue #15 · nodeca/pako · GitHub

https://zhuanlan.zhihu.com/p/24306581

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer

ArrayBuffer(二进制数据的原始缓冲区)_encoding arraybuffer-CSDN博客

  • 8
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
pako 是一个 JavaScript 实现的压缩解压库,可以用来压缩和解压多种格式的数据,包括 GZIP、DEFLATE、ZLIB 等。 下面是使用 pako 进行压缩和解压的示例代码: ```javascript // 压缩数据 var data = 'Hello, World!'; var compressed = pako.deflate(data, { level: 9 }); // 解压数据 var decompressed = pako.inflate(compressed); console.log(decompressed.toString()); ``` 在上面的代码中,我们首先定义了一个字符串 `data`,然后使用 `pako.deflate()` 方法将其压缩压缩级别为 9(最高级别)。接着,我们使用 `pako.inflate()` 方法对压缩后的数据进行解压,得到原始的字符串,并使用 `toString()` 方法将其转换为字符串类型。 需要注意的是,pako 只支持压缩和解压二进制数据,如果需要压缩和解压字符串,需要先将字符串转换为二进制数据,再进行操作。可以使用 `TextEncoder` 和 `TextDecoder` 对象来进行字符串和二进制数据之间的转换。例如: ```javascript // 将字符串转换为二进制数据 var encoder = new TextEncoder(); var data = encoder.encode('Hello, World!'); // 压缩数据 var compressed = pako.deflate(data, { level: 9 }); // 解压数据 var decompressed = pako.inflate(compressed); // 将二进制数据转换为字符串 var decoder = new TextDecoder(); console.log(decoder.decode(decompressed)); ``` 在上面的代码中,我们首先使用 `TextEncoder` 对象将字符串 `Hello, World!` 转换为二进制数据,然后进行压缩和解压操作。最后,使用 `TextDecoder` 对象将解压后的二进制数据转换为字符串。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值