使用node.js和“了解基本websocket API”;ws"-包装(API:bitfinex)

使用node.js和“了解基本websocket API”;ws"-包装(API:bitfinex),node.js,api,websocket,bitcoin,Node.js,Api,Websocket,Bitcoin,我正在尝试使用node.js、“ws”包(它似乎是npmjs.com上非常流行的websocket包)和bitfinex.com(一种加密货币交换)websocketapi来实现基本的websocket通信。 我想阅读某一货币对的公开代码,文档如下: 到目前为止,我的结果是有效的,但仍然与我根据文件应该得到的结果有很大不同 我使用的代码片段取自上面链接的文档: const ws = require('ws') const w = new ws('wss://api.bitfinex.com/ws

我正在尝试使用node.js、“ws”包(它似乎是npmjs.com上非常流行的websocket包)和bitfinex.com(一种加密货币交换)websocketapi来实现基本的websocket通信。 我想阅读某一货币对的公开代码,文档如下:

到目前为止,我的结果是有效的,但仍然与我根据文件应该得到的结果有很大不同

我使用的代码片段取自上面链接的文档:

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.4946446514874,61.090312631087,0.07891487256895.2049708550013891]

但现在,问题是,在文档中,响应看起来不同。我如何确定哪个数字是什么?我应该能从回复中得到更多的信息,不是吗? 给定的示例响应如下所示:

// response - trading
{
    event: "subscribed",
    channel: "ticker",
    chanId: CHANNEL_ID,
    pair: "BTCUSD"
 }
这和我得到的数字数组有什么关系?例如,我将如何读取“pair:”字段(“BTCUSD”)或任何其他列出的字段,如(投标、投标期、数量、高、低等)?我错过了什么明显的东西吗

我知道这是一个很大的问题,但也许有人知道一个或两个好的例子或提示来启发我。提前谢谢

亲切问候,,
s

中描述了此API的总体websocket方案。如果您还没有阅读该页面,现在是阅读该页面的好时机

对于您的示例程序,您应该在websocket的前两条消息中看到infosubscribed事件信息应在websocket连接建立后立即发送,而订阅的应在响应您的订阅请求时发送

在此之后,您应该会看到您订阅的频道的股票行情快照消息,随后是定期的股票行情更新消息。这些是您看到的JSON数组。公共股票行情频道的这些消息的格式如所述--单击深绿色“详细信息”栏中的快照和更新标题以查看定义。在这种情况下,快照和更新使用相同的格式:

[ CHANNEL_ID,
  [ FRR, BID, BID_PERIOD, BID_SIZE, ASK, ASK_PERIOD, ASK_SIZE,
    DAILY_CHANGE, DAILY_CHANGE_PERC, LAST_PRICE, VOLUME, HIGH, LOW
  ]
]
其含义如上述URL的“流字段”表所述。 您可以将这些消息解析为JSON字符串,并像访问任何数组一样访问字段值

有点奇怪的是,API将它们作为数组而不是带有命名属性的对象发送。我想他们希望保持这些消息的紧凑性,因为它们构成了大部分流量