Exemplo n.º 1
0
        public void Process()
        {
            try
            {
                Stream = client.GetStream();
                // получаем имя пользователя
                string message = GetMessage();
                userName = message;

                message = userName + " вошел в чат";
                // посылаем сообщение о входе в чат всем подключенным пользователям
                server.BroadcastMessage(message, this.Id);
                Console.WriteLine(message);
                // в бесконечном цикле получаем сообщения от клиента
                while (true)
                {
                    try
                    {
                        message = GetMessage();
                        message = String.Format("{0}: {1}", userName, message);
                        Console.WriteLine(message);
                        server.BroadcastMessage(message, this.Id);
                    }
                    catch
                    {
                        message = String.Format("{0}: покинул чат", userName);
                        Console.WriteLine(message);
                        server.BroadcastMessage(message, this.Id);
                        break;
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
            finally
            {
                // в случае выхода из цикла закрываем ресурсы
                server.RemoveConnection(this.Id);
                Close();
            }
        }
Exemplo n.º 2
0
        //Get message and put it in the chat
        private async void SetMessageInChat(string[] command)
        {
            foreach (Chat chat in clientChats)
            {
                if (chat.Id == command[2])
                {
                    Message msg = new Message();
                    msg.AuthorId      = this.Id;
                    msg.Date          = DateTime.Today.ToString("dd.MM.yyyy hh:mm:ss:fff");
                    msg.TypeOfMessage = command[3];
                    msg.ChatId        = command[2];
                    msg.DataOfMessage = command[4];
                    chat.MessagesOfChat.Add(msg);
                    await Task.Run(() => server.BroadcastMessage(msg, chat.Id, this, chat));

                    using (var db = new ClientContext())
                    {
                        var entity = db.chats.Where(i => i.Id == command[2]).First();
                        entity.MessagesOfChat.Add(msg);
                        db.SaveChanges();
                    }
                }
            }
        }