From 3dc641680d215ab070f299be53a2676d9885b0ac Mon Sep 17 00:00:00 2001 From: Sem van der Hoeven Date: Tue, 13 Oct 2020 10:56:13 +0200 Subject: [PATCH] added template for receiving json chat message --- Server/Models/ServerClient.cs | 11 +++++++++-- Server/Models/ServerCommunication.cs | 8 ++++++++ Server/Server.csproj | 1 + SharedClientServer/JSONConvert.cs | 17 +++++++++++++++++ SharedClientServer/SharedClientServer.projitems | 1 + 5 files changed, 36 insertions(+), 2 deletions(-) create mode 100644 SharedClientServer/JSONConvert.cs diff --git a/Server/Models/ServerClient.cs b/Server/Models/ServerClient.cs index bb8f2e9..94a563f 100644 --- a/Server/Models/ServerClient.cs +++ b/Server/Models/ServerClient.cs @@ -86,16 +86,23 @@ namespace Server.Models { Debug.WriteLine($"Got message from {Username} : {message}"); byte id = message[0]; + byte[] payload = new byte[message.Length - 1]; + Array.Copy(message,1,payload,0,message.Length-1); switch(id) { case 0x01: // canvas data break; case 0x02: - // message data + // json message data + (string, string) combo = JSONConvert.GetUsernameAndMessage(payload); + string textUsername = combo.Item1; + string textMsg = combo.Item2; + // todo handle sending to all except this user the username and message to display in chat break; + case 0x03: - // json data + // object data break; default: Debug.WriteLine("Received weird identifier: " + id); diff --git a/Server/Models/ServerCommunication.cs b/Server/Models/ServerCommunication.cs index 0ead864..8869581 100644 --- a/Server/Models/ServerCommunication.cs +++ b/Server/Models/ServerCommunication.cs @@ -85,5 +85,13 @@ namespace Server.Models sc.sendMessage(message); } } + + public void sendToAllExcept(string username, byte[] message) + { + foreach (ServerClient sc in serverClients) + { + if (sc.Username != username) sc.sendMessage(message); + } + } } } diff --git a/Server/Server.csproj b/Server/Server.csproj index afc85b6..c6ad1ce 100644 --- a/Server/Server.csproj +++ b/Server/Server.csproj @@ -11,6 +11,7 @@ + diff --git a/SharedClientServer/JSONConvert.cs b/SharedClientServer/JSONConvert.cs new file mode 100644 index 0000000..004567a --- /dev/null +++ b/SharedClientServer/JSONConvert.cs @@ -0,0 +1,17 @@ +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Text; + +namespace SharedClientServer +{ + class JSONConvert + { + public static (string,string) GetUsernameAndMessage(byte[] json) + { + string msg = Encoding.ASCII.GetString(json); + dynamic payload = JsonConvert.DeserializeObject(msg); + return (payload.username, payload.message); + } + } +} diff --git a/SharedClientServer/SharedClientServer.projitems b/SharedClientServer/SharedClientServer.projitems index e7cdd0b..97e39cb 100644 --- a/SharedClientServer/SharedClientServer.projitems +++ b/SharedClientServer/SharedClientServer.projitems @@ -10,6 +10,7 @@ + \ No newline at end of file