Как создать соединение веб-сокета для каждого пользователя в базе данных? - PullRequest
0 голосов
/ 06 апреля 2019

я хочу создать бота для обмена бинансом этот бот будет копировать каждую сделку с моего счета в другой аккаунт например, если я куплю биткойн для своего аккаунта по цене 4000 $, он купит его для других аккаунтов, которые подключены к моему аккаунту в моем боте, чтобы вы могли подключить свой аккаунт к аккаунту профессионального трейдера, и все, что он будет делать, будет сделано на вашем аккаунте. тоже для подключения к binance websocket я использую пакет npm-binance-api у меня проблема в том, что я хочу создать экземпляр этого пакета для каждого пользователя в базе данных, чтобы у меня было соединение с веб-сокетом для каждого пользователя, чтобы я мог отслеживать активность каждого пользователя ТАК Как я могу иметь подключение к веб-сокету для каждого пользователя это мой код, который не работает

User.find().then((users)=>{
  let binance = []
  for(let i =0;i<users.length;i++){
    this["binance"+i] = require('node-binance-api')().options({
      APIKEY,
      APISECRET,
      useServerTime: true,
      // reconnect: false // If you get timestamp errors, synchronize to server time at startup
    }).websockets.userData(balance_update, execution_update);


    function balance_update(data) {
      console.log("Balance Update user:",users[i]);
    }
    async function execution_update(data) {
      let {
          x: executionType,
          s: symbol,
          p: price,
          q: quantity,
          S: side,
          o: orderType,
          i: orderId,
          X: orderStatus
      } = data;
      if (executionType == "NEW") {
          if (executionType == "REJECTED") {
              return console.log("Order Failed! Reason: " + data.r);
          }
    user2Secret).then((binance)=>{
              try {
                  for(let j = 0;j<users[i].subAccount.length;j++){
                    console.log('we are in j');

                    let binancesub = new require('ccxt').binance({
                      apiKey: users[i].subAccount[j].bak,
                      secret: users[i].subAccount[j].bsk,
                    })
                    binancesub.createOrder(symbo,orderType,side,quantity,price)
                  }
              } catch (error) {
                  return console.log('error in binance:',error);
              }
          return;
      }
      if (executionType === "CANCELED") {
          return console.log('order should be canceled');
      }
    }

  }

})
...