当前位置: 首页 > 后端技术 > PHP

SwooleWebSoctet使用zlib压缩PHP和pako.js

时间:2023-03-30 01:21:01 PHP

一些理论知识。先说一下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(ebeforeconversion.data);//开始转换varblob=e.data;varreader=newFileReader();reader.readAsBinaryString(blob);reader.onload=function(evt){vardata=pako.inflate(evt.target.result,{to:'string'})//转换后console.log(JSON.parse(data))};};Base64encoding通常在WebSoctet中不使用此方法,但在接口或其他文本传输中使用到。PHP+JavaScriptSwooleWebSoctet框架安利一个基于Swoole的WebSoctet开发框架:MixPHP