Esempio n. 1
0
        public static async void ClientMessageThread(object param)
        {
            while (true)
            {
                try
                {
                    string resp = "";
                    WebSocketReceiveResult webSocketResp;
                    if (SubscriptionWebSocket.State == WebSocketState.Open)
                    {
                        do
                        {
                            ArraySegment <byte> bytesReceived = new ArraySegment <byte>(new byte[1000]);
                            webSocketResp = await SubscriptionWebSocket.ReceiveAsync(bytesReceived, CancellationToken.None);

                            resp += Encoding.ASCII.GetString(bytesReceived.Array, 0, webSocketResp.Count);
                        }while (!webSocketResp.EndOfMessage);

                        WebSocketMessage wsResp = JsonConvert.DeserializeObject <WebSocketMessage>(resp);

                        if (wsResp.Msg == "ClientLoginResponse")
                        {
                            ClientLoginResponse loginReponse = JsonConvert.DeserializeObject <ClientLoginResponse>(resp);

                            DoLog(string.Format("Client {0} succesfully logged. Token {1}", loginReponse.UserId, loginReponse.JsonWebToken));
                        }
                        else if (wsResp.Msg == "ClientReject")
                        {
                            ClientReject loginRejected = JsonConvert.DeserializeObject <ClientReject>(resp);
                            DoLog(string.Format("Login rejected for user {0}. Reason: {1}", loginRejected.UserId, loginRejected.RejectReason));
                        }
                        else
                        {
                            DoLog(string.Format("Unknown message: {0}", resp));
                        }
                    }
                    else
                    {
                        Thread.Sleep(1000);
                    }
                }
                catch (Exception ex)
                {
                    DoLog(string.Format("Error: {0}", ex.Message));
                }
            }
        }
        protected virtual void ProcessClientLoginMock(IWebSocketConnection socket, string m)
        {
            WebSocketLoginMessage wsLogin = JsonConvert.DeserializeObject <WebSocketLoginMessage>(m);


            UserRecord loggedUser = UserRecords.Where(x => x.UserId == wsLogin.UserId).FirstOrDefault();

            DoLog(string.Format("Incoming Login request for user {0}", wsLogin.UUID), MessageType.Information);

            if (loggedUser != null)
            {
                ClientLoginResponse resp = new ClientLoginResponse()
                {
                    Msg          = "ClientLoginResponse",
                    Sender       = wsLogin.Sender,
                    UUID         = wsLogin.UUID,
                    UserId       = wsLogin.UserId,
                    JsonWebToken = _TOKEN
                };


                DoLog(string.Format("user {0} Successfully logged in", wsLogin.UUID), MessageType.Information);
                UserLogged = true;
                DoSend <ClientLoginResponse>(socket, resp);
            }
            else
            {
                ClientReject reject = new ClientReject()
                {
                    Msg          = "ClientReject",
                    Sender       = wsLogin.Sender,
                    UUID         = wsLogin.UUID,
                    UserId       = wsLogin.UserId,
                    RejectReason = string.Format("Invalid user or password")
                };

                DoLog(string.Format("user {0} Rejected because of wrong user or password", wsLogin.UUID), MessageType.Information);
                DoSend <ClientReject>(socket, reject);
                socket.Close();
            }
        }
Esempio n. 3
0
        public virtual async void ReadResponses(object param)
        {
            while (true)
            {
                try
                {
                    string resp = "";
                    WebSocketReceiveResult webSocketResp;
                    if (SubscriptionWebSocket.State == WebSocketState.Open)
                    {
                        do
                        {
                            ArraySegment <byte> bytesReceived = new ArraySegment <byte>(new byte[1000]);
                            webSocketResp = await SubscriptionWebSocket.ReceiveAsync(bytesReceived, CancellationToken.None);

                            resp += Encoding.ASCII.GetString(bytesReceived.Array, 0, webSocketResp.Count);
                        }while (!webSocketResp.EndOfMessage);

                        if (resp != "")
                        {
                            WebSocketMessage wsResp = JsonConvert.DeserializeObject <WebSocketMessage>(resp);

                            if (wsResp.Msg == "ClientLoginResponse")
                            {
                                ClientLoginResponse loginReponse = JsonConvert.DeserializeObject <ClientLoginResponse>(resp);
                                OnEvent(loginReponse);
                            }
                            else if (wsResp.Msg == "ClientReject")
                            {
                                ClientReject loginRejected = JsonConvert.DeserializeObject <ClientReject>(resp);
                                OnEvent(loginRejected);
                            }
                            else if (wsResp.Msg == "ClientLogoutResponse")
                            {
                                ClientLogoutResponse logoutReponse = JsonConvert.DeserializeObject <ClientLogoutResponse>(resp);
                                OnEvent(logoutReponse);
                            }
                            else if (wsResp.Msg == "SubscriptionResponse")
                            {
                                SubscriptionResponse subscrResponse = JsonConvert.DeserializeObject <SubscriptionResponse>(resp);
                                OnEvent(subscrResponse);
                            }
                            else if (wsResp.Msg == "ClientHeartbeatRequest")
                            {
                                OnEvent(JsonConvert.DeserializeObject <ClientHeartbeat>(resp));
                            }
                            else if (wsResp.Msg == "AccountRecord")
                            {
                                OnEvent(JsonConvert.DeserializeObject <AccountRecord>(resp));
                            }
                            else if (wsResp.Msg == "CreditRecordUpdate")
                            {
                                OnEvent(JsonConvert.DeserializeObject <CreditRecordUpdate>(resp));
                            }
                            else if (wsResp.Msg == "DailySettlementPrice")
                            {
                                OnEvent(JsonConvert.DeserializeObject <DailySettlementPrice>(resp));
                            }
                            else if (wsResp.Msg == "FirmRecord")
                            {
                                OnEvent(JsonConvert.DeserializeObject <FirmRecord>(resp));
                            }
                            else if (wsResp.Msg == "OfficialFixingPrice")
                            {
                                OnEvent(JsonConvert.DeserializeObject <OfficialFixingPrice>(resp));
                            }
                            else if (wsResp.Msg == "RefereceRateMsg")
                            {
                                OnEvent(JsonConvert.DeserializeObject <RefereceRateMsg>(resp));
                            }
                            else if (wsResp.Msg == "SecurityMasterRecord")
                            {
                                OnEvent(JsonConvert.DeserializeObject <SecurityMasterRecord>(resp));
                            }
                            else if (wsResp.Msg == "UserRecord")
                            {
                                OnEvent(JsonConvert.DeserializeObject <UserRecord>(resp));
                            }
                            else if (wsResp.Msg == "CreditRecordUpdate")
                            {
                                OnEvent(JsonConvert.DeserializeObject <CreditRecordUpdate>(resp));
                            }
                            else if (wsResp.Msg == "LastSale")
                            {
                                OnEvent(JsonConvert.DeserializeObject <LastSale>(resp));
                            }
                            else if (wsResp.Msg == "Quote")
                            {
                                OnEvent(JsonConvert.DeserializeObject <Quote>(resp));
                            }
                            else if (wsResp.Msg == "DepthOfBook")
                            {
                                OnEvent(JsonConvert.DeserializeObject <DepthOfBook>(resp));
                            }
                            else if (wsResp.Msg == "LegacyOrderAck")
                            {
                                OnEvent(JsonConvert.DeserializeObject <LegacyOrderAck>(resp));
                            }
                            else if (wsResp.Msg == "LegacyOrderCancelRejAck")
                            {
                                OnEvent(JsonConvert.DeserializeObject <LegacyOrderCancelRejAck>(resp));
                            }
                            else
                            {
                                UnknownMessage unknownMsg = new UnknownMessage()
                                {
                                    Msg    = "UnknownMsg",
                                    Resp   = resp,
                                    Reason = string.Format("Unknown message: {0}", resp)
                                };
                                OnEvent(unknownMsg);
                            }
                        }
                    }
                    else
                    {
                        Thread.Sleep(1000);
                    }
                }
                catch (Exception ex)
                {
                    ErrorMessage errorMsg = new ErrorMessage()
                    {
                        Msg = "ErrorMsg", Error = ex.Message
                    };
                    OnEvent(errorMsg);
                }
            }
        }