一些理论知识

先说一下deflate算法吧,deflate是zip压缩文件的默认算法, 其实deflate现在不光用在zip文件中, 在7z, xz等其他的压缩文件中都用, 实际上deflate只是一种压缩数据流的算法,任何需要流式压缩的地方都可以用。

也就是说 zlib 格式, gzip 格式,是文件格式,deflate 是这些文件格式使用的压缩算法。

传输方式

deflate 压缩后是二进制,通常有两种传输方式:

  • 二进制
  • Base64编码

二进制

PHP

// 压缩,注意:其中 ZLIB_ENCODING_DEFLATE 参数是不能少的

$data = gzdeflate(json_encode($array, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES), 6, ZLIB_ENCODING_DEFLATE);

// 使用 swoole 以二进制的方式发送

$webSocket->push($fd, $data, WEBSOCKET_OPCODE_BINARY);

JavaScript

// 消息事件

ws.onmessage = function(e) {

// 转换前

console.log(e.data);

// 开始转换

var blob = e.data;

var reader = new FileReader();

reader.readAsBinaryString(blob);

reader.onload = function (evt) {

var data = pako.inflate(evt.target.result, { to: 'string' })

// 转换后

console.log(JSON.parse(data))

};

};

Base64编码

通常在 WebSoctet 不会使用这种方法,但是在接口或其他文本传输中会使用到。

PHP + JavaScript

<script type='text/javascript'>

const compressedDEFLATE = '<?php echo base64_encode(gzdeflate('Compress me', 6, ZLIB_ENCODING_DEFLATE )); ?>';

function atos(arr) {

for (var i=0, l=arr.length, s='', c; c = arr[i++];)

s += String.fromCharCode(

c > 0xdf && c < 0xf0 && i < l-1

? (c & 0xf) << 12 | (arr[i++] & 0x3f) << 6 | arr[i++] & 0x3f

: c > 0x7f && i < l

? (c & 0x1f) << 6 | arr[i++] & 0x3f

: c

);

return s

}

console.log(atos(pako.ungzip(atob(compressedDEFLATE))));

</script>

Swoole WebSoctet 框架

安利一个基于 Swoole 的 WebSoctet 开发框架: MixPHP

Php解压pako,Swoole WebSoctet 使用 zlib 压缩之 PHP 与 pako.js相关推荐

  1. 7z001怎么解压在安卓手机上面_安卓zip文件压缩RAR解压手机下载-安卓zip文件压缩RAR解压v1.0最新版下载...

    安卓zip文件压缩RAR解压是一款非常好用的手机压缩解压缩神器,在安卓zip文件压缩RAR解压上我们可以看到很多的实用的功能,软件可以帮助我们更好的处理我们手机中的文件,感兴趣的朋友赶紧下载安卓zip ...

  2. cordova 安卓文件多选_安卓zip文件压缩RAR解压软件下载-安卓zip文件压缩RAR解压下载v3.0.4安卓版...

    安卓zip文件压缩RAR解压是一款非常好用的手机压缩解压缩神器,在安卓zip文件压缩RAR解压上我们可以看到很多的实用的功能,软件可以帮助我们更好的处理我们手机中的文件,感兴趣的朋友赶紧下载安卓zip ...

  3. Linux世界的三种压缩解压方式,zip/unzip方式压缩解压、tar方式压缩解压、jar方式压缩解压暨shopt extglob反选示例

    Linux世界的三种压缩解压方式,zip/unzip方式压缩解压.tar方式压缩解压.jar方式压缩解压暨shopt extglob反选示例 zip/unzip方式.tar方式压缩解压是Linux中的 ...

  4. 使用Java生成的ZIP压缩包解压时出现不可预料的压缩文件末端的解决方案

    使用Java生成的ZIP压缩包解压时出现不可预料的压缩文件末端的解决方案 问题描述: 如下图所示,在解压Java程序生成的ZIP压缩包时出现不可预料的压缩文件末端, 问题分袖: 出现上面的情况,大概有 ...

  5. java字符串压缩js解压_接口实现后台GZIP压缩,pako.js 前端解压

    import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOExceptio ...

  6. python 解压zip 慢_Python解压ZIP、RAR等常用压缩格式的方法

    解压大杀器 首先祭出可以应对多种压缩包格式的python库:patool.如果平时只用基本的解压.打包等操作,也不想详细了解各种压缩格式对应的python库,patool应该是个不错的选择. pato ...

  7. python解压gz_使用python请求下载压缩tar.gz文件并使用tar解压它

    我需要使用请求调用来下载tar gz文件,我发现requests.get会自动解压缩文件,我尝试使用给定的解决方案 here 但当我试图用tar解压它时,它说它不是gzip格式. 我尝试了以下方法: ...

  8. java 7zip解压_Apache Commons Compress介绍-JAVA压缩解压7z文件

    7zip(下面简称7z)是由Igor Pavlov所开发的一种压缩格式,主要使用的压缩算法是LZMA/LZMA2.7z是一种压缩比非常高的格式,这与其压缩算法LZMA有直接关系,所以很多大文件都是用7 ...

  9. c# rar解压大小_C#利用WinRAR实现压缩和解压缩

    usingSystem;usingMicrosoft.Win32;usingSystem.Diagnostics;usingSystem.IO;namespaceMSCL {/// ///压缩解压类/ ...

最新文章

  1. 利用SMTP收发邮件
  2. kill 进程_Node.js 进程平滑离场剖析
  3. 优化问题中的两个挑战是?
  4. VTK:相互作用之TrackballCamera
  5. 顶级极客技术挑战赛,你敢来挑战吗?| 大神登峰造极
  6. 23行代码_动图展示——快排详解(排序最快的经典算法)
  7. Web自动化测试理论知识
  8. maven 打包普通java配置_配置pom.xml用maven打包java工程的方法(推荐)
  9. mysql 用source 导入数据库报错
  10. 安装TFS2010实际体验
  11. python post 上传文件_python接口自动化7-post文件上传
  12. Linux Futex的设计与实现(转)
  13. webstorm快捷键收集
  14. solr相关配置(搜索novel案例)
  15. POJ-1004-Financial Management
  16. 再见了我热爱的ACM赛场
  17. 从事大数据行业5年,峰哥总结出了以下 7 条建议
  18. gitee上贡献度不显示问题的设置
  19. 浅析API网关——Ocelot[网关]+Consul[服务发现负载均衡]+Polly[服务熔断]+Ids4[服务认证]
  20. python中 f代表什么_python 中下拉框中的f,v,m是什么意思??

热门文章

  1. 西门子PLC200smart学习浅谈
  2. 7-1 温度转换 (100 分) 摄氏温度/华氏温度
  3. 库乐队历史版本怎么下载_库乐队下载_库乐队安卓版下载_库乐队下载安装-太平洋下载中心...
  4. 2021-08-29 网安实验-Linux系统渗透测试之Metasploit攻击linux实例
  5. 电子商务应用课程知识整理 第三章-网络营销
  6. python 爬虫爬取统计局北京统计数据
  7. DAO与DAL的区别
  8. 重装和重装后该怎么办(通用版)
  9. 什么是融资融券,开通融资融券需要什么条件?哪家券商两融利率可以低至5%呢?
  10. 用C语言X是能被3整除的奇数,设a.b.c是三个连续的奇数.则( )A.能被a3整除B.能被b3整除C.能被c3整除D.能被abc整除——青夏教育精英家教网——...