protected void ProcessClientLogoutMock(IWebSocketConnection socket) { ClientLogoutResponse logout = new ClientLogoutResponse() { Msg = "ClientLogoutResponse", UserId = "0", Sender = 1, Time = 0 }; DoSend <ClientLogoutResponse>(socket, logout); socket.Close(); }
protected void ProcessPlatformStatus(IWebSocketConnection socket, WebSocketSubscribeMessage subscrMsg) { bool doLogout = false; if (PlatformStatus.cState == PlatformStatus._STATE_SEND_CLIENT_LOGOUT) { DoLog(string.Format("Sending state open because of status 7 <will send ClientLogoutResponse>"), MessageType.Information); PlatformStatus.cState = PlatformStatus._STATE_OPEN; doLogout = true; } else { DoLog(string.Format("Senting platform status {0}", PlatformStatus.cState), MessageType.Information); } DoSend <PlatformStatus>(socket, PlatformStatus); ProcessSubscriptionResponse(socket, "PS", subscrMsg.ServiceKey, subscrMsg.UUID, true); if (doLogout) { PlatformStatus.cState = PlatformStatus._STATE_SEND_CLIENT_LOGOUT; DoLog(string.Format("Sleeping before Returning ClientLogoutResponse..."), MessageType.Information); Thread.Sleep(10 * 1000); DoLog(string.Format("Returning ClientLogoutResponse..."), MessageType.Information); ClientLogoutResponse logout = new ClientLogoutResponse() { Msg = "ClientLogoutResponse", Sender = 0, Time = 0, UserId = subscrMsg.UserId, ReLogin = false }; DoSend <ClientLogoutResponse>(socket, logout); DoLog(string.Format(" ClientLogoutResponse sent..."), MessageType.Information); } }
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); } } }
private static void ProcessEvent(WebSocketMessage msg) { if (msg is ClientLoginResponse) { ClientLoginResponse loginResp = (ClientLoginResponse)msg; if (loginResp.JsonWebToken != null) { JWTToken = loginResp.JsonWebToken; UUID = loginResp.UUID; UserId = loginResp.UserId; } ProcessJsonMessage <ClientLoginResponse>(loginResp); } else if (msg is ClientReject) { ProcessJsonMessage <ClientReject>((ClientReject)msg); } else if (msg is SubscriptionResponse) { ProcessJsonMessage <SubscriptionResponse>((SubscriptionResponse)msg); } else if (msg is AccountRecord) { ProcessJsonMessage <AccountRecord>((AccountRecord)msg); } else if (msg is DailySettlementPrice) { ProcessJsonMessage <DailySettlementPrice>((DailySettlementPrice)msg); } else if (msg is FirmRecord) { ProcessJsonMessage <FirmRecord>((FirmRecord)msg); } else if (msg is OfficialFixingPrice) { ProcessJsonMessage <OfficialFixingPrice>((OfficialFixingPrice)msg); } else if (msg is RefereceRateMsg) { ProcessJsonMessage <RefereceRateMsg>((RefereceRateMsg)msg); } else if (msg is SecurityMasterRecord) { ProcessJsonMessage <SecurityMasterRecord>((SecurityMasterRecord)msg); } else if (msg is UserRecord) { ProcessJsonMessage <UserRecord>((UserRecord)msg); } else if (msg is LastSale) { ProcessJsonMessage <LastSale>((LastSale)msg); } else if (msg is Quote) { ProcessJsonMessage <Quote>((Quote)msg); } else if (msg is CreditRecordUpdate) { ProcessJsonMessage <CreditRecordUpdate>((CreditRecordUpdate)msg); } else if (msg is DepthOfBook) { ProcessJsonMessage <DepthOfBook>((DepthOfBook)msg); } else if (msg is LegacyOrderAck) { ProcessJsonMessage <LegacyOrderAck>((LegacyOrderAck)msg); } else if (msg is LegacyOrderCancelRejAck) { ProcessJsonMessage <LegacyOrderCancelRejAck>((LegacyOrderCancelRejAck)msg); } else if (msg is ClientLogoutResponse) { ClientLogoutResponse logoutResp = (ClientLogoutResponse)msg; JWTToken = null; UserId = null; UUID = null; ProcessJsonMessage <ClientLogoutResponse>((ClientLogoutResponse)msg); } else if (msg is ClientHeartbeat) { ClientHeartbeat heartBeatReq = (ClientHeartbeat)msg; ProcessJsonMessage <ClientHeartbeat>((ClientHeartbeat)msg); ProcessHeartbeat(heartBeatReq.SeqNum); } else if (msg is UnknownMessage) { UnknownMessage unknownMsg = (UnknownMessage)msg; DoLog(string.Format("<<unknown {0}", unknownMsg.Resp)); } else if (msg is ErrorMessage) { ErrorMessage errorMsg = (ErrorMessage)msg; DoLog(string.Format("<<unknown {0}", errorMsg.Error)); } else { DoLog(string.Format("<<Unknown message type {0}", msg.ToString())); } Console.WriteLine(); }