在我的应用程序websockets

时间:2017-07-18 22:47:56

标签: node.js express socket.io

我试图在我的应用程序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);
       }
    });

});

0 个答案:

没有答案