账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    请求返回的数据是一个Blob对象,存储的是二进制数据。 所以需要先从Blob对象中提取数据,pako.inflate()
    74
    0
    请求返回的数据是一个Blob对象,存储的是二进制数据。 所以需要先从Blob对象中提取数据,然后我使用pako.inflate() 返回的还是一样的数据 let socket = new WebSocket("wss://api-aws.huobi.pro/ws"); socket.onopen = function(e) { alert(" 连接已建立"); var data = { "sub": "market.btcusdt.ticker" } socket.send('"sub": "market.btcusdt.ticker"'); console.log(data) }; const pako = require('pako'); //引入 socket.onmessage = function(event) { console.log(`接收到数据: ${event.data}`); // console.log(event) if (event.data instanceof Blob) { let result = ''; let reader = new FileReader(); console.log( reader) //这里面的result打印出是 "\u001f‹\b\u0000\u0000\u0000\u0000\u0000\u0000\u0000-ÊK //FileReader:从Blob对象中读取数据 reader.onload = function() { result = JSON.parse(pako.inflate(reader.result, { to: 'string' })); // console.log(result) //pako.inflate()对数据进行解压,得到正常的json对象 if (result.ping) { socket.send(JSON.stringify({ pong: result.ping })); //响应服务器,避免断开连接 } } reader.readAsBinaryString(event.data); //将返回的数据解析为字符串格式 这里打印上面这个没有反应 } };websocket他请求返回的原样子数据格式 这是打印reader的数据下面这个是打印出来的event的数据 请教一下 这是为什么 这个方法我也是网上百度到的 说要这么解决 但是我解决出来 数据还是没有变成字符串补充的::::::: 打印 reader.result我如果下面是使用eader.readAsArrayBuffer(event.data);的话 他就是这种格式 如是使用eader.readAsArrayBuffer(event.data);的话 他就是这种格式 reader.result------arraybuffer
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 藏匿悲楚@ 普通会员 1楼

      你可以使用pako库来解码Blob对象中的二进制数据。以下是一个示例:

      javascript let blob = new Blob([你的二进制数据], {type: 'binary'}); let text = await pako.inflate(blob); console.log(text);

      这段代码首先创建了一个新的Blob对象,其中包含你的二进制数据。然后,它使用await关键字来等待pako的解码完成。最后,它打印出解码后的文本。

      请注意,你需要先安装pako库才能运行这段代码。你可以使用npm或yarn来安装:

      bash npm install pako

      或者

      bash yarn add pako

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部