[ADD] added method for generating a message

This commit is contained in:
Sem van der Hoeven
2020-10-20 15:46:28 +02:00
parent 78c1aad696
commit d9f2b97d3e
2 changed files with 23 additions and 5 deletions

View File

@@ -10,13 +10,12 @@ namespace Server.Models
{
class ServerClient : ObservableObject
{
public string Username { get; set; }
private TcpClient tcpClient;
private NetworkStream stream;
private byte[] buffer = new byte[1024];
private byte[] totalBuffer = new byte[1024];
private int totalBufferReceived = 0;
public User user;
public User User { get; set; }
/// <summary>
@@ -85,7 +84,7 @@ namespace Server.Models
/// <param name="message">the incoming message</param>
private void HandleIncomingMessage(byte[] message)
{
Debug.WriteLine($"Got message from {Username} : {message}");
Debug.WriteLine($"Got message from {User?.Username} : {message}");
byte id = message[0];
byte[] payload = new byte[message.Length - 1];
Array.Copy(message,1,payload,0,message.Length-1);
@@ -97,8 +96,9 @@ namespace Server.Models
string uName = JSONConvert.GetUsernameLogin(message);
if (uName != null)
{
Username = uName;
Debug.WriteLine("[SERVERCLIENT] set username to " + Username);
User = new User(uName);
User.Username = uName;
Debug.WriteLine("[SERVERCLIENT] set username to " + uName);
}
break;

View File

@@ -11,6 +11,7 @@ namespace SharedClientServer
{
string msg = Encoding.ASCII.GetString(json);
dynamic payload = JsonConvert.DeserializeObject(msg);
return (payload.username, payload.message);
}
@@ -19,5 +20,22 @@ namespace SharedClientServer
dynamic payload = JsonConvert.DeserializeObject(Encoding.ASCII.GetString(json));
return payload.username;
}
/// <summary>
/// constructs a message that can be sent to the clients or server
/// </summary>
/// <param name="identifier">the identifier for what kind of message it is</param>
/// <param name="payload">the json payload</param>
/// <returns>a byte array containing a message that can be sent to clients or server</returns>
public static byte[] GetMessageToSend(byte identifier, dynamic payload)
{
// convert the dynamic to bytes
byte[] payloadBytes = Encoding.ASCII.GetBytes(JsonConvert.SerializeObject(payload));
// make the array that holds the message and copy the payload into it with the first spot containing the identifier
byte[] res = new byte[payloadBytes.Length + 1];
Array.Copy(payloadBytes, 0, res, 1, payloadBytes.Length);
res[0] = identifier;
return res;
}
}
}