예제 #1
0
        protected void ProcessSubscrError(WebSocketErrorMessage subscrError)
        {
            string error = string.Format("{0}. Symbol = {1}", subscrError.error, subscrError.Symbol);
            BitmexMarketDataErrorWrapper errorWrapper = new BitmexMarketDataErrorWrapper(subscrError.Symbol, error);

            OnMessageRcv(errorWrapper);
        }
예제 #2
0
        public void OnEvent(string resp)
        {
            WebSocketResponseMessage wsResp = wsResp = JsonConvert.DeserializeObject <WebSocketResponseMessage>(resp);

            lock (tSubscrLock)
            {
                if (wsResp.IsResponse())//We have the response to a subscription
                {
                    WebSocketSubscriptionResponse requestRespSubscr = JsonConvert.DeserializeObject <WebSocketSubscriptionResponse>(resp);

                    if (ResponseRequestSubscriptions.ContainsKey(requestRespSubscr.GetSubscriptionEvent()))
                    {
                        WebSocketSubscriptionResponse requestRespEvent = ResponseRequestSubscriptions[requestRespSubscr.GetSubscriptionEvent()];

                        requestRespEvent.RunSubscritionEvent(requestRespSubscr);
                    }
                }
                else if (resp.Contains("error"))
                {
                    WebSocketErrorMessage wsError = JsonConvert.DeserializeObject <WebSocketErrorMessage>(resp);

                    if (wsError.request != null)
                    {
                        foreach (string ev in wsError.request.args)
                        {
                            string[] fields = ev.Split(new string[] { ":" }, StringSplitOptions.RemoveEmptyEntries);

                            string key    = fields[0];
                            string symbol = fields.Length > 1 ? fields[1] : null;

                            WebSocketSubscriptionEvent subscrEvent = EventSubscriptions[key];

                            if (subscrEvent != null)
                            {
                                wsError.Symbol = symbol;
                                subscrEvent.RunEvent(wsError);
                            }
                        }
                    }
                    else
                    {
                        ProcessSubscriptionEvent(resp);
                    }
                }
                else //We have an event from a subscription
                {
                    ProcessSubscriptionEvent(resp);
                }
            }
        }