public void ThreadWorker() { try { string data = ""; PacketSender.SendJsonString(Stream, "STARTAPP::"); while (true) { Thread.Sleep(1000); data = PacketRecipient.GetJsonData(Stream); // Обработка данных, которые отправляет сервер if (data.Contains("USERS_LIST::")) { data = data.Remove(0, "USERS_LIST::".Length); dispatcher.Invoke(new Action(() => { Users = JsonWorker.JsonToUsersList(data); })); } if (data.Contains("MESSAGE::")) { data = data.Remove(0, "MESSAGE::".Length); dispatcher.Invoke(new Action(() => { Messages.Add(data); })); } // Обработка данных, которые отправляет клиент if (ClientData.Length != 0) { PacketSender.SendJsonString(Stream, ClientData); ClientData = ""; } data = ""; } } catch (Exception) { throw; } finally { Stream.Close(); Client.Close(); } }
public void Starting() { try { while (true) { Thread.Sleep(1000); data = PacketRecipient.GetJsonData(Stream); Console.WriteLine(data); // Регистрация if (data.Contains("REGISTER::")) { data = data.Remove(0, "REGISTER::".Length); user = JsonWorker.JsonToUser(data); if (FileWorker.ExistsUserFile(user.Login)) { user.SessionKey = "ERROR:EXISTS::USER"; } else { FileWorker.WriteUserFile(user.Login, JsonWorker.UserToJson(user)); user.SessionKey = Guid.NewGuid().ToString(); } PacketSender.SendJsonString(Stream, JsonWorker.UserToJson(user)); } // Авторизация if (data.Contains("LOGINING::")) { data = data.Remove(0, "LOGINING::".Length); Console.WriteLine(data); user = JsonWorker.JsonToUser(data); if (FileWorker.ExistsUserFile(user.Login)) { if (user.Password == JsonWorker.JsonToUser(FileWorker.ReadUserFile(user.Login)).Password) { user.SessionKey = Guid.NewGuid().ToString(); user.Stream = Stream; Users.Add(user); } else { user.SessionKey = "ERROR::BAD::LOGIN"; } } else { user.SessionKey = "ERROR::BAD::LOGIN"; } PacketSender.SendJsonString(Stream, JsonWorker.UserToJson(user)); } // При входе в аккаунт - передаём все необходимые данные, список подключенных юзеров. if (data.Contains("STARTAPP::")) { foreach (var item in Users) { PacketSender.SendJsonString(item.Stream, "USERS_LIST::" + JsonWorker.UsersListToJson(Users)); } } if (data.Contains("MESSAGE::")) { data = data.Remove(0, "MESSAGE::".Length); foreach (var item in Users) { PacketSender.SendJsonString(item.Stream, $"MESSAGE::{user.Login}: {data}"); } File.AppendAllText("MessageLog.txt", $"[{DateTime.Now}] {user.Login}: {data}"); } data = ""; } } catch (Exception exeption) { Users.Remove(user); Console.WriteLine(exeption.Message); } finally { if (Stream != null) { Stream.Close(); } if (Client != null) { Client.Close(); } } }