private void GotMessageOnConnection(object sender, MessageEventArgs e) { string msgType = e.msg.GetType().Name; string textToPrint = ""; switch (msgType) { case "IdentificationMessage": textToPrint = "user " + ((IdentificationMessage)e.msg).SourceUser.Name + " got connected"; UserContext UserContextInActiveConnectionsList = ConnectedUsers.Single(uc => uc.Connection == (Connection)sender); UserContextInActiveConnectionsList.User = ((IdentificationMessage)e.msg).SourceUser; IdentificationMessage retMsg = (IdentificationMessage)e.msg; retMsg.Status = true; ((Connection)sender).SendMessage(retMsg); if (NewClientLoginEv != null) { NewClientLoginEv(sender, new UserContextEventArgs(UserContextInActiveConnectionsList)); } break; case "TextMessage": foreach (var item in ConnectedUsers.Where(uc => uc.Connection != (Connection)sender)) { item.Connection.SendMessage(e.msg); } break; default: break; } Logger.Print("INFO: " + textToPrint); }