From 74f8e868f6ac5560fd2c042a1f2685a7d52636f8 Mon Sep 17 00:00:00 2001 From: Dogukan Date: Wed, 21 Oct 2020 17:47:48 +0200 Subject: [PATCH] [ADDITION] servercommunication towards the client. Still in progress not functional because of a null exception when receiving the broadcast message. --- Client/Client.cs | 5 +++-- Client/ViewModels/ViewModelGame.cs | 18 +++++++++--------- Server/Models/ServerClient.cs | 12 ++++++++++++ SharedClientServer/JSONConvert.cs | 2 +- 4 files changed, 25 insertions(+), 12 deletions(-) diff --git a/Client/Client.cs b/Client/Client.cs index 7dacd73..c44eca6 100644 --- a/Client/Client.cs +++ b/Client/Client.cs @@ -69,7 +69,7 @@ namespace Client private void handleData(byte[] message) { - byte id = message[0]; + byte id = message[4]; byte[] payload = new byte[message.Length - 1]; Array.Copy(message, 1, payload, 0, message.Length - 1); switch (id) @@ -83,7 +83,8 @@ namespace Client string textUsername = combo.Item1; string textMsg = combo.Item2; //TODO display username and message in chat window - Debug.WriteLine("Message username: {0}\t Message: {1}", textUsername, textMsg); + + Debug.WriteLine("[CLIENT] User name: {0}\t User message: {1}", textUsername, textMsg); break; case JSONConvert.LOBBY: diff --git a/Client/ViewModels/ViewModelGame.cs b/Client/ViewModels/ViewModelGame.cs index 8365194..8af8af4 100644 --- a/Client/ViewModels/ViewModelGame.cs +++ b/Client/ViewModels/ViewModelGame.cs @@ -33,15 +33,15 @@ namespace Client.ViewModels public ViewModelGame() { - if (_payload == null) - { - _message = ""; - } - else - { - _message = _payload.message; - _username = _payload.username; - } + //if (_payload == null) + //{ + // _message = ""; + //} + //else + //{ + // _message = _payload.message; + // _username = _payload.username; + //} OnKeyDown = new RelayCommand(ChatBox_KeyDown); } diff --git a/Server/Models/ServerClient.cs b/Server/Models/ServerClient.cs index b10639b..ea791cb 100644 --- a/Server/Models/ServerClient.cs +++ b/Server/Models/ServerClient.cs @@ -1,4 +1,5 @@  +using Newtonsoft.Json.Linq; using SharedClientServer; using System; using System.Collections.Generic; @@ -16,6 +17,7 @@ namespace Server.Models private byte[] totalBuffer = new byte[1024]; private int totalBufferReceived = 0; public User User { get; set; } + private ServerCommunication serverCom = ServerCommunication.INSTANCE; /// @@ -116,7 +118,17 @@ namespace Server.Models string textUsername = combo.Item1; string textMsg = combo.Item2; + Debug.WriteLine("[SERVERCLIENT] User name: {0}\t User message: {1}", textUsername, textMsg); + + dynamic dataPacket = new + { + username = textUsername, + message = textMsg + }; + // todo handle sending to all except this user the username and message to display in chat + //serverCom.SendToAllExcept(); + serverCom.sendToAll(JSONConvert.GetMessageToSend(JSONConvert.MESSAGE, dataPacket)); break; case JSONConvert.LOBBY: diff --git a/SharedClientServer/JSONConvert.cs b/SharedClientServer/JSONConvert.cs index b0d83cb..4914ee3 100644 --- a/SharedClientServer/JSONConvert.cs +++ b/SharedClientServer/JSONConvert.cs @@ -24,6 +24,7 @@ namespace SharedClientServer public static (string,string) GetUsernameAndMessage(byte[] json) { string msg = Encoding.ASCII.GetString(json); + Debug.WriteLine("Sent data: {0}", msg); dynamic payload = JsonConvert.DeserializeObject(msg); return (payload.username, payload.message); @@ -49,7 +50,6 @@ namespace SharedClientServer } - /// /// constructs a message that can be sent to the clients or server ///