Php解压pako,Swoole WebSoctet 使用 zlib 压缩之 PHP 与 pako.js
一些理论知识
先说一下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相关推荐
- 7z001怎么解压在安卓手机上面_安卓zip文件压缩RAR解压手机下载-安卓zip文件压缩RAR解压v1.0最新版下载...
安卓zip文件压缩RAR解压是一款非常好用的手机压缩解压缩神器,在安卓zip文件压缩RAR解压上我们可以看到很多的实用的功能,软件可以帮助我们更好的处理我们手机中的文件,感兴趣的朋友赶紧下载安卓zip ...
- cordova 安卓文件多选_安卓zip文件压缩RAR解压软件下载-安卓zip文件压缩RAR解压下载v3.0.4安卓版...
安卓zip文件压缩RAR解压是一款非常好用的手机压缩解压缩神器,在安卓zip文件压缩RAR解压上我们可以看到很多的实用的功能,软件可以帮助我们更好的处理我们手机中的文件,感兴趣的朋友赶紧下载安卓zip ...
- Linux世界的三种压缩解压方式,zip/unzip方式压缩解压、tar方式压缩解压、jar方式压缩解压暨shopt extglob反选示例
Linux世界的三种压缩解压方式,zip/unzip方式压缩解压.tar方式压缩解压.jar方式压缩解压暨shopt extglob反选示例 zip/unzip方式.tar方式压缩解压是Linux中的 ...
- 使用Java生成的ZIP压缩包解压时出现不可预料的压缩文件末端的解决方案
使用Java生成的ZIP压缩包解压时出现不可预料的压缩文件末端的解决方案 问题描述: 如下图所示,在解压Java程序生成的ZIP压缩包时出现不可预料的压缩文件末端, 问题分袖: 出现上面的情况,大概有 ...
- java字符串压缩js解压_接口实现后台GZIP压缩,pako.js 前端解压
import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOExceptio ...
- python 解压zip 慢_Python解压ZIP、RAR等常用压缩格式的方法
解压大杀器 首先祭出可以应对多种压缩包格式的python库:patool.如果平时只用基本的解压.打包等操作,也不想详细了解各种压缩格式对应的python库,patool应该是个不错的选择. pato ...
- python解压gz_使用python请求下载压缩tar.gz文件并使用tar解压它
我需要使用请求调用来下载tar gz文件,我发现requests.get会自动解压缩文件,我尝试使用给定的解决方案 here 但当我试图用tar解压它时,它说它不是gzip格式. 我尝试了以下方法: ...
- java 7zip解压_Apache Commons Compress介绍-JAVA压缩解压7z文件
7zip(下面简称7z)是由Igor Pavlov所开发的一种压缩格式,主要使用的压缩算法是LZMA/LZMA2.7z是一种压缩比非常高的格式,这与其压缩算法LZMA有直接关系,所以很多大文件都是用7 ...
- c# rar解压大小_C#利用WinRAR实现压缩和解压缩
usingSystem;usingMicrosoft.Win32;usingSystem.Diagnostics;usingSystem.IO;namespaceMSCL {/// ///压缩解压类/ ...
最新文章
- 利用SMTP收发邮件
- kill 进程_Node.js 进程平滑离场剖析
- 优化问题中的两个挑战是?
- VTK:相互作用之TrackballCamera
- 顶级极客技术挑战赛,你敢来挑战吗?| 大神登峰造极
- 23行代码_动图展示——快排详解(排序最快的经典算法)
- Web自动化测试理论知识
- maven 打包普通java配置_配置pom.xml用maven打包java工程的方法(推荐)
- mysql 用source 导入数据库报错
- 安装TFS2010实际体验
- python post 上传文件_python接口自动化7-post文件上传
- Linux Futex的设计与实现(转)
- webstorm快捷键收集
- solr相关配置(搜索novel案例)
- POJ-1004-Financial Management
- 再见了我热爱的ACM赛场
- 从事大数据行业5年,峰哥总结出了以下 7 条建议
- gitee上贡献度不显示问题的设置
- 浅析API网关——Ocelot[网关]+Consul[服务发现负载均衡]+Polly[服务熔断]+Ids4[服务认证]
- python中 f代表什么_python 中下拉框中的f,v,m是什么意思??
热门文章
- 西门子PLC200smart学习浅谈
- 7-1 温度转换 (100 分) 摄氏温度/华氏温度
- 库乐队历史版本怎么下载_库乐队下载_库乐队安卓版下载_库乐队下载安装-太平洋下载中心...
- 2021-08-29 网安实验-Linux系统渗透测试之Metasploit攻击linux实例
- 电子商务应用课程知识整理 第三章-网络营销
- python 爬虫爬取统计局北京统计数据
- DAO与DAL的区别
- 重装和重装后该怎么办(通用版)
- 什么是融资融券,开通融资融券需要什么条件?哪家券商两融利率可以低至5%呢?
- 用C语言X是能被3整除的奇数,设a.b.c是三个连续的奇数.则( )A.能被a3整除B.能被b3整除C.能被c3整除D.能被abc整除——青夏教育精英家教网——...