【发布时间】:2018-06-10 06:43:52
【问题描述】:
请为这个问题的不精确的标题道歉,我不是一个经验丰富的程序员,在 node.js 中更是如此
我的意图很简单:我想使用我通过 npm 安装的 bitfinex-api-node 包(bitfinex 加密货币交换的 node.js 包装器)来读取各种价格数据来自交易所的货币对来计算更好的交易策略。
readme.md 中提供的示例代码工作正常,这是一个精简版本,它创建一个 BFX 对象,该对象订阅给定货币对的代码并不断输出代码数据:
const BFX = require('bitfinex-api-node')
const API_KEY = 'secret'
const API_SECRET = 'secret'
const opts = {
version: 2,
transform: true
}
const bws = new BFX(API_KEY, API_SECRET, opts).ws
bws.on('open', () => {
bws.subscribeTicker('BTCUSD')
})
bws.on('ticker', (pair, ticker) => {
console.log('Ticker:', ticker)
})
bws.on('error', console.error)
到目前为止一切顺利。现在为了一个简单的例子,假设我想获取两个货币对(BTC/USD、ETH/USD)的当前价格并将它们添加到显示结果中。我明显幼稚的做法是这样的:
const BFX = require('bitfinex-api-node')
const API_KEY = 'secret'
const API_SECRET = 'secret'
const opts = {
version: 2,
transform: true
}
const bws1 = new BFX(API_KEY, API_SECRET, opts).ws
const bws2 = new BFX(API_KEY, API_SECRET, opts).ws
var priceBTCUSD;
var priceETHBTC;
bws1.on('open', () => {
bws1.subscribeTicker('BTCUSD')
})
bws2.on('open', () => {
bws2.subscribeTicker('ETHUSD')
})
bws1.on('ticker', (pair, ticker) => {
//console.log('Ticker1:', ticker.LAST_PRICE)
priceBTCUSD = ticker.LAST_PRICE
})
bws2.on('ticker', (pair, ticker) => {
//console.log('Ticker2:', ticker.LAST_PRICE)
priceETHBTC = ticker.LAST_PRICE
})
bws1.on('error', console.error)
bws2.on('error', console.error)
//HERE IT COMES:
console.log(priceBTCUSD+priceETHBTC)
最后一行的结果输出是“NaN”。似乎在 BFX 对象建立连接并接收任何数据之前执行了将所需结果记录到控制台的最后一行。
如何正确设置?如何从接收到的数据流中检索数据?我真的需要每个货币对一个 BFX-websocket 对象吗?我将如何读取一次价格数据,关闭 websocket 连接(读取一次价格后不需要)并重新连接以读取不同货币对的价格?
谢谢!如果我的问题不够清楚,请随时请求更多数据。
亲切的问候, s
【问题讨论】:
标签: javascript node.js npm websocket