使用node.js和" ws" -package(API:bitfinex)

时间:2018-01-03 18:20:39

标签: node.js api websocket bitcoin

我试图找出使用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等)?我错过了一些明显的东西吗

我知道要立刻提出这个问题很多,但也许有人知道一两个很好的例子或提示来启发我。提前谢谢!

亲切的问候, 小号

1 个答案:

答案 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将这些作为数组而不是具有命名属性的对象发送。我想他们希望将这些信息保持紧凑,因为它们构成了大部分流量。