【问题标题】:Pako.js error, "invalid stored block lengths" when trying to inflate Websocket messagesPako.js 错误,尝试膨胀 Websocket 消息时出现“无效的存储块长度”
【发布时间】:2019-12-07 10:10:45
【问题描述】:

我正在尝试使用 javascript 扩展来自第三方 websocket 的消息,但收到 pako.js

“无效的存储块长度”错误。

我用来实现网络套接字的示例代码可以在这里找到:

https://github.com/okcoin-okex/API-docs-OKEx.com/tree/master/demo

可以在此处找到代码的完整工作版本:

https://github.com/Tucsky/SignificantTrades/blob/master/src/exchanges/okex.js (https://aggr.trade)

我尝试使用zlib.js 而不是Pako.js,但在使用该库时遇到了更棘手的问题。 我尝试了在 stackoverflow 上找到的其他替代解决方案,但它们似乎没有满足我的需求。

这是我正在运行的显示错误的代码。 https://jsfiddle.net/fwkgmvjr/

    let myAPI = new WebSocket('wss://real.okex.com:10442/ws/v3');

    //When the connection is first opened
    myAPI.onopen = event => {

      console.log('Socket opened')
      myAPI.send('{"op": "subscribe", "args":["futures/ticker:ETH-USD-190927"]}')
    }

    myAPI.onmessage = event => {


      if (event.data instanceof String) {
        console.log(event.data)
      } else {

        try {
          console.log(JSON.parse(pako.inflateRaw(event.data, {
            to: 'string'
          })))
        } catch (err) {
          console.log(err)
        }
      }
    }

    myAPI.onclose = event => {

      console.log('Socket closed')
    }

    myAPI.onerror = event => {

      console.log(`[error] ${error.message}`)
    }

我希望来自 websocket 的消息能够以某种方式轻松充气。

【问题讨论】:

    标签: javascript pako


    【解决方案1】:

    解决方案是添加

      this.api.binaryType = 'arraybuffer'
    

    在声明 websocket 时。

    【讨论】:

      猜你喜欢
      • 2019-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-14
      • 1970-01-01
      • 2022-12-18
      • 1970-01-01
      相关资源
      最近更新 更多