private void DataReceived(object sender, TcpClientConnection.DataReceivedEventArgs e) { try { Console.WriteLine("Data received: {0}", e.Data); var element = XElement.Parse(e.Data); Message message = messageConverter.ConvertFromXml(element); Console.WriteLine("Message received: {0}", message); } catch (Exception ex) { Console.WriteLine("Error processing data: {0}", ex); } }
void DataReceived(object sender, TcpServer.DataReceivedEventArgs e) { Console.WriteLine("Data received!"); try { // Converting received data to xml var xml = ASCIIEncoding.UTF8.GetString(e.Data, 0, e.Data.Length); Console.WriteLine("Data received from {0}: {1}", e.IPEndPoint, xml); XElement xmlElement = XElement.Parse(xml); Console.WriteLine("Xml data: " + xmlElement); // TODO: we're not dealing with splitted message. fix this later // Creating message from xml string Message message = messageConverter.ConvertFromXml(xmlElement); long currentMessageId = message.Id; Command command = message.Command; switch (command.CommandType) { case CommandType.Ack: // Server can't get this command break; case CommandType.Login: HandleLoginMessage(currentMessageId, (LoginCommand)command, e.IPEndPoint); break; case CommandType.UserState: HandleUserStateCommand(currentMessageId, (UserStateCommand)command); break; case CommandType.TextMessage: HandleTextMessageCommand(currentMessageId, (TextMessageCommand)command); break; default: Debug.Assert(false, "Unknown command type: " + command.CommandType); break; } //tcpServer.SendData(e.Data, e.IPEndPoint); //Это может быть регистрационное сообщение //var userName = doc.Descendants("userName").SingleOrDefault(); } catch (Exception ex) { Console.WriteLine("Error processing data. {0}", ex); } }