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();
            }
        }
Example #2
0
        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();
                }
            }
        }