private async Task ReconnectUserDataWS() { Log.Debug(">>> !!! USER DATA SOCKET RECONNECTING..."); // Close socket webSocketClient.CloseWebSocketInstance(userSocketID); // Re-initialize userDATA = new BinaDataUser(); OpenBUYorders = new List <OrderInfo>(); OpenSELLorders = new List <OrderInfo>(); StrategyP2.ResetOrderLists(); // Check and sort currently open orders await LoadOpenOrders(); // Reassign events and re-open WS: var userMsgs = new UserDataWebSocketMessages(); userMsgs.OrderUpdateMessageHandler += data => userDATA.HandleOrderMessage(data); userMsgs.TradeUpdateMessageHandler += data => userDATA.HandleTradeMessage(data); userMsgs.AccountUpdateMessageHandler += data => userDATA.HandleAccountMessage(data); userSocketID = await webSocketClient.ConnectToUserDataWebSocket(userMsgs); Log.Debug(">>> !!! USER DATA SOCKET RECONNECTED"); }
public async Task Initialize() { // CONNECT WS (single or combined) AND SEND TO QUEUE: if (SETTINGS.SubSpecificSymbols.Count == 1) { depthSocketID = webSocketClient.ConnectToDepthWebSocket(SETTINGS.SubSpecificSymbols[0], data => depthDATA.DepthUpdateQueue.Enqueue(data)); } else if (SETTINGS.SubSpecificSymbols.Count > 1) { var symbols = string.Join(",", SETTINGS.SubSpecificSymbols); depthSocketID = webSocketClient.ConnectToDepthWebSocketCombined(symbols, data => { depthDATA.DepthUpdateQueue.Enqueue(new BinanceDepthData() { Symbol = data.Stream.Split('@')[0].ToUpper(), UpdateId = data.Data.UpdateId, AskDepthDeltas = data.Data.AskDepthDeltas, BidDepthDeltas = data.Data.BidDepthDeltas }); }); } // BUILD ORDER BOOK, THEN START DATA UPDATES: foreach (string sym in SETTINGS.SubSpecificSymbols) { await depthDATA.BuildDepthCache(sym); } depthDATA.StartUpdates(); //Check and sort currently open orders await LoadOpenOrders(); // Handle UserData WS message events, start UserData WS: var userMsgs = new UserDataWebSocketMessages(); userMsgs.OrderUpdateMessageHandler += data => userDATA.HandleOrderMessage(data); userMsgs.TradeUpdateMessageHandler += data => userDATA.HandleTradeMessage(data); userMsgs.AccountUpdateMessageHandler += data => userDATA.HandleAccountMessage(data); userSocketID = await webSocketClient.ConnectToUserDataWebSocket(userMsgs); UserWSConnectTime = DateTime.Now; }