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(); } }
//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(); } } } }