我试图在我的应用程序websocket中使用外部websockets引用,但我无法使其正常工作。我对Node一般都很陌生,所以我确定我犯了一些noob错误。
io是我的内部websocket实例连接到我的应用程序。 bws是一个外部websocket API。当我的应用程序客户端在' ticker'上发送消息时渠道。我希望bws能够利用这个字符串设置订阅并通过我的内部io套接字发回msg。
对是一个字符串:' BTCUSD'
自动收报机:JSON对象{' BID':1,' ASK':2}等。
const http = require('http');
const express = require('express')
const app = express();
const server = http.createServer(app);
const io = require('socket.io').listen(server);
const path = require('path');
const BFX = require('bitfinex-api-node')
const redis = require('redis');
const client = redis.createClient();
server.listen(80);
const bws = new BFX(API_KEY, API_SECRET, opts).ws
io.on('connection', function (socket) {
console.log('socket connected');
bws.on('ticker', (pair, ticker) => {
var now = new Date;
client.set(pair + '-' + getFormattedDate(), JSON.stringify(ticker), redis.print);
socket.emit('ticker', {
pair: pair,
ticker: ticker
});
});
socket.on('ticker', function (msg) {
bws.on('open', () => {
bws.subscribeTicker(msg)
/* bws.subscribeOrderBook('BTCUSD')
bws.subscribeTrades('BTCUSD')*/
})
});
});
Doh我想通了
var bwsOpen = false;
socket.on('ticker', function (msg) {
bws.on('open', () => {
bwsOpen = true;
})
});
io.on('connection', function (socket) {
console.log('socket connected');
bws.on('ticker', (pair, ticker) => {
var now = new Date;
client.set(pair + '-' + getFormattedDate(), JSON.stringify(ticker), redis.print);
socket.emit('ticker', {
pair: pair,
ticker: ticker
});
});
socket.on('ticker', function (msg) {
if(bwsOpen) {
bws.subscribeTicker(msg);
}
});
});