javascript - Pako.js 错误,尝试膨胀 Websocket 消息时出现“无效的存储块长度”
问题描述
我正在尝试使用 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 的消息能够以某种方式轻松充气。
解决方案
解决方案是添加
this.api.binaryType = 'arraybuffer'
在声明 websocket 时。
推荐阅读
- java - 在 Selenium 中运行无头 Chrome 会引发“未知错误:DevToolsActivePort 文件不存在”
- docker - 如何使用 docker-compose 配置网络
- css - 如何在单行上对齐 2+
- python - 在 Conv1D keras 中合并 6 个输入
- javascript - 如何使用 jquery 将动态创建的 img 元素加载到 HTML5 画布中
- python - python get_document signature
- sql - Sybase IQ 从用分隔符分隔的表中获取列列表的 sql 命令是什么。我们在 oracle 中使用以下命令
- php - 我以前存储的数据在更新数据时被自动删除
- vba - 如何创建一个循环来读取一系列单元格并确定哪些具有值以及每个单元格的右侧是什么
- pandas - 调用股票价格中的特定日期和值