protected void ClientHeartbeatThread(object param) { IWebSocketConnection socket = (IWebSocketConnection)param; while (socket.IsAvailable) { try { if (UserLogged) { ClientHeartbeat heartbeatReq = new ClientHeartbeat() { Msg = "ClientHeartbeatRequest", UserId = "user1", Sender = 0, SeqNum = HeartbeatSeqNum, Time = 0, UUID = "user1" }; DoSend <ClientHeartbeat>(socket, heartbeatReq); HeartbeatSeqNum++; } Thread.Sleep(2000); } catch (Exception ex) { socket.Close(); } } }
private void CheckAndAddIfNewClient(ClientHeartbeat clientHeartbeat) { if (clients.ContainsKey(clientHeartbeat.Callsign)) { clients[clientHeartbeat.Callsign].MobileClientOnline(); } else { clients[clientHeartbeat.Callsign] = Client.NewMobileClientOnline(ClientConfigurationManager.Instance.DefaultRadioMobileConfig, clientHeartbeat.Callsign); } }
private static void ProcessHeartbeat(ClientHeartbeat heartBeat) { if (Token == null) { DoLog("Missing authentication token in memory!. User not logged"); return; } TimeSpan elapsed = DateTime.Now - new DateTime(1970, 1, 1); ClientHeartbeat heartbeatResp = new ClientHeartbeat() { Msg = "ClientHeartbeat", JsonWebToken = heartBeat.JsonWebToken, Uuid = heartBeat.Uuid, Time = Convert.ToInt64(elapsed.TotalMilliseconds) }; DoSend <ClientHeartbeat>(heartBeat); }
private void TaskClientDataSub(CancellationToken cancelToken, BlockingCollection <object> queue, string bind) { using (var subSocket = new SubscriberSocket()) { subSocket.Options.ReceiveHighWatermark = 50; subSocket.Bind(bind); subSocket.Subscribe(""); while (!cancelToken.IsCancellationRequested) { var messageTopicReceived = subSocket.ReceiveFrameString(); int bytesReceived = 0; switch (messageTopicReceived) { case "ClientHeartbeat": ClientHeartbeat clientHeartbeat = subSocket.Deserialise <ClientHeartbeat>(out bytesReceived); serverStatistics.DataBytesReceived += bytesReceived; CheckAndAddIfNewClient(clientHeartbeat); break; case "ClientPositionUpdate": ClientPositionUpdate clientPositionUpdate = subSocket.Deserialise <ClientPositionUpdate>(out bytesReceived); serverStatistics.DataBytesReceived += bytesReceived; CheckAndAddIfNewClient(clientPositionUpdate); UpdateMobileClientPosition(clientPositionUpdate); break; case "ClientFrequencyUpdate": ClientFrequencyUpdate clientFrequencyUpdate = subSocket.Deserialise <ClientFrequencyUpdate>(out bytesReceived); serverStatistics.DataBytesReceived += bytesReceived; CheckAndAddIfNewClient(clientFrequencyUpdate); UpdateMobileClientFrequency(clientFrequencyUpdate); break; } } taskClientDataSub = null; } }
private static void ProcessEvent(WebSocketMessageV2 msg) { if (msg is ClientLoginResponse) { ClientLoginResponse loginResp = (ClientLoginResponse)msg; if (loginResp.JsonWebToken != null) { UUID = loginResp.Uuid; UserId = loginResp.UserId; Token = loginResp.JsonWebToken; FirmId = null; } ProcessJsonMessage <ClientLoginResponse>(loginResp); } else if (msg is TokenResponse) { ProcessTokenResponse(msg); } else if (msg is ClientLogout) { ClientLogout logoutResp = (ClientLogout)msg; Token = null; UserId = UserId; FirmId = null; UUID = null; ProcessJsonMessage <ClientLogout>((ClientLogout)msg); } else if (msg is ClientHeartbeat) { ClientHeartbeat heartBeat = (ClientHeartbeat)msg; ProcessJsonMessage <ClientHeartbeat>((ClientHeartbeat)msg); ProcessHeartbeat(heartBeat); } else if (msg is SubscriptionResponse) { ProcessJsonMessage <SubscriptionResponse>((SubscriptionResponse)msg); } else if (msg is ClientAccountRecord) { ProcessJsonMessage <ClientAccountRecord>((ClientAccountRecord)msg); } else if (msg is ClientLastSale) { ProcessJsonMessage <ClientLastSale>((ClientLastSale)msg); } else if (msg is FirmsTradingStatusUpdateResponse) { ProcessJsonMessage <FirmsTradingStatusUpdateResponse>((FirmsTradingStatusUpdateResponse)msg); } else if (msg is ClientBestBidOffer) { ProcessJsonMessage <ClientBestBidOffer>((ClientBestBidOffer)msg); } else if (msg is ClientMarketState) { ProcessJsonMessage <ClientMarketState>((ClientMarketState)msg); } else if (msg is ClientInstrument) { ProcessJsonMessage <ClientInstrument>((ClientInstrument)msg); } else if (msg is ClientOrderAck) { ProcessJsonMessage <ClientOrderAck>((ClientOrderAck)msg); } else if (msg is ClientOrderRej) { ProcessJsonMessage <ClientOrderRej>((ClientOrderRej)msg); } else if (msg is ClientMassCancelResponse) { ProcessJsonMessage <ClientMassCancelResponse>((ClientMassCancelResponse)msg); } else if (msg is ClientOrderReq) { ProcessJsonMessage <ClientOrderReq>((ClientOrderReq)msg); } else if (msg is ClientDSP) { ProcessJsonMessage <ClientDSP>((ClientDSP)msg); } else if (msg is FirmsListResponse) { FirmsListResponse resp = (FirmsListResponse)msg; resp.Firms.ToList().ForEach(x => SettlementAgentDict.Add(x.FirmId.ToString(), resp.SettlementAgentId)); ProcessJsonMessage <FirmsListResponse>(resp); } else if (msg is FirmsCreditLimitUpdateResponse) { ProcessJsonMessage <FirmsCreditLimitUpdateResponse>((FirmsCreditLimitUpdateResponse)msg); } else if (msg is FirmsTradingStatusUpdateResponse) { ProcessJsonMessage <FirmsTradingStatusUpdateResponse>((FirmsTradingStatusUpdateResponse)msg); } else if (msg is EmailNotificationsListResponse) { ProcessJsonMessage <EmailNotificationsListResponse>((EmailNotificationsListResponse)msg); } else if (msg is EmailNotificationsCreateResponse) { ProcessJsonMessage <EmailNotificationsCreateResponse>((EmailNotificationsCreateResponse)msg); } else if (msg is EmailNotificationsUpdateResponse) { ProcessJsonMessage <EmailNotificationsUpdateResponse>((EmailNotificationsUpdateResponse)msg); } else if (msg is EmailNotificationsDeleteResponse) { ProcessJsonMessage <EmailNotificationsDeleteResponse>((EmailNotificationsDeleteResponse)msg); } else if (msg is UnknownMessageV2) { UnknownMessageV2 unknownMsg = (UnknownMessageV2)msg; DoLog(string.Format("<<unknown {0}", unknownMsg.Resp)); } else if (msg is ErrorMessageV2) { ErrorMessageV2 errorMsg = (ErrorMessageV2)msg; DoLog(string.Format("<<unknown {0}", errorMsg.Error)); } else { DoLog(string.Format("<<Unknown message type {0}", msg.ToString())); } Console.WriteLine(); }
public ClientHeartbeatReception(ClientHeartbeat clientHeartbeat) { Callsign = clientHeartbeat.Callsign; ReceivedUTC = DateTime.UtcNow; }
private void HandleClientStatusUpdate(ClientHeartbeat message) { if (_connectedClients.ContainsKey(message.ClientGuid)) { _connectedClients[message.ClientGuid].LastActivity = DateTime.UtcNow; _connectedClients[message.ClientGuid].Status = message.Status; Sender.Tell(new ClientHeartbeatResponse(_connectedClients.Values.ToList())); } else { Unhandled(message); } }
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(); }