private void ClientHandler(object tcpClient) { var client = new Client((TcpClient)tcpClient); NetworkStream stream = null; StreamWriter writer = null; StreamReader reader = null; try { Application.Current.Dispatcher.Invoke((Action)(() => { ConnectedClients.Add(client); UpdateDefaultStatus(); })); byte[] message = new byte[2048]; stream = client.PlayerClient.GetStream(); writer = new StreamWriter(stream); reader = new StreamReader(stream); while (true) { string messageData = reader.ReadLine(); var packet = JsonConvert.DeserializeObject<Packet>(messageData); if (!client.IsRegistered && packet.MessageType == PacketType.Register) HandleRegisterMessage(client, packet); DisplayClientMessageInLog(client, packet); var x = new Packet() { MessageType = PacketType.Action, Message = "OK" }; writer.WriteLine(JsonConvert.SerializeObject(x)); writer.Flush(); } } catch(Exception e) { } finally { if(stream != null) stream.Close(); Application.Current.Dispatcher.Invoke((Action)(() => { ConnectedClients.Remove(client); })); } }
private void DisplayClientMessageInLog(Client client, Packet packet) { Application.Current.Dispatcher.Invoke((Action)(() => { MessageLog.Add(string.Format("{0}: {1}", client.Name, packet.Message)); })); }
private void HandleRegisterMessage(Client client, Packet packet) { client.Name = packet.Message; client.IsRegistered = true; if (OnClientRegistered != null) OnClientRegistered(client); }