我试图找出使用node.js," ws" -package(这似乎是来自npmjs.com的非常流行的websocket包)和bitfinex的基本websocket通信。 com(加密货币交换)websocket API。 我想阅读某个货币对的公共代码,文档在这里:https://docs.bitfinex.com/v2/reference#ws-public-ticker
到目前为止我的结果是有效的,但仍然与我根据文档得到的结果大不相同。
我正在处理从上面链接的文档中获取的代码段:
const ws = require('ws')
const w = new ws('wss://api.bitfinex.com/ws/2')
w.on('message', (msg) => {
console.log(msg)
})
let msg = JSON.stringify({
event: 'subscribe',
channel: 'ticker',
symbol: 'tBTCUSD'
})
w.on('open', () => {
w.send(msg)
})
到目前为止,通过向订阅者输出来自订阅频道的消息:
[1,[14873,23.49464465,14874,61.09031263,1087,0.0789,14872,56895.20497085,15500,13891]]
但是现在,这就是问题,在文档中,响应看起来不同。我如何确定哪个数字是什么?我应该能够从响应中获得更多信息,不是吗? 给定的示例响应如下所示:
// response - trading
{
event: "subscribed",
channel: "ticker",
chanId: CHANNEL_ID,
pair: "BTCUSD"
}
这与我得到的那一组数字有什么关系?例如,我如何阅读"对:"字段(" BTCUSD")或任何其他列出的字段,如(BID,BID_PERIOD,VOLUME,HIGH,LOW等)?我错过了一些明显的东西吗
我知道要立刻提出这个问题很多,但也许有人知道一两个很好的例子或提示来启发我。提前谢谢!
亲切的问候, 小号
答案 0 :(得分:1)
此API的整体websocket方案在https://bitfinex.readme.io/v2/docs/ws-general中有所描述。如果您还没有阅读该页面,现在是时候进行此操作了。
对于您的示例程序,您应该看到信息和订阅事件作为来自websocket的前两条消息。建立websocket连接后应立即发送信息,并且应该发送订阅以响应您的订阅请求。
之后,您应该看到一个股票快照消息,然后是您订阅的频道的定期股票更新消息。这些是你看到的JSON数组。公共自动收报机渠道的这些消息的格式在https://bitfinex.readme.io/v2/reference#ws-public-ticker中描述 - 单击深绿色“详细信息”栏中的快照和更新标题以查看定义。在这种情况下,快照和更新使用相同的格式:
[ CHANNEL_ID,
[ FRR, BID, BID_PERIOD, BID_SIZE, ASK, ASK_PERIOD, ASK_SIZE,
DAILY_CHANGE, DAILY_CHANGE_PERC, LAST_PRICE, VOLUME, HIGH, LOW
]
]
具有上述网址的“流媒体字段”表格中所述的含义。 您可以将这些消息解析为JSON字符串,并像访问任何数组一样访问字段值。
有点奇怪的是,API将这些作为数组而不是具有命名属性的对象发送。我想他们希望将这些信息保持紧凑,因为它们构成了大部分流量。