在接入火币api的时候发现,火币websocket中传输的数据均已经gzip压缩过,需要在客户端解压

这里使用pako.js解压,直接上代码

前端环境

//需要先引入pako.js

socket.onmessage = function (msg) {
    if (msg.data instanceof Blob){
        blob = msg.data;
        let result = '';
        let reader = new FileReader();
        reader.readAsBinaryString(blob); 
        reader.onload = function() {
            result = JSON.parse(pako.inflate(reader.result,{to:'string'}));
            //打印出返回的数据
            console.log(result);
        }
    }
}

由于传过来的是文件,需要用FileReader先读取出来。readAsBinaryString,使读出来的文件返回成BinaryString,再使用pako.inflate解压,第二个参数{to:'string'},让解压后返回字符串。

Node环境

//首先 npm install pako

var pako = require('pako');
connection.on('message', message => {
    //这里message打印出来为object,message.type=binary.
    result = JSON.parse(pako.inflate(message.binaryData, {to:'string'}));
}

这里只是简单的解压,详细的压缩解压请查询文档

pako.js源码+文档