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(); } }
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); } } }