Вопрос по предыдущей задаче (Чат (8)). Решение уже прошло валидацию, поэтому не могу прикрепить код к той задаче. Ниже - условие этой задачи. У меня вопрос по этому методу: String serverHandshake(Connection connection) 39 строка - мы проверяем соответствие сообщения клиента типу USER_NAME. А где описание этого типа? Не совсем понимаю.... 33 строка - Message messageOut = new Message(MessageType.NAME_REQUEST); А где само сообщение? Решение я по большей части списала и не понимаю, как это работает. УСЛОВИЕ Класс Handler должен реализовывать протокол общения с клиентом. Выделим из протокола отдельные этапы и реализуем их с помощью отдельных методов: Этап первый - это этап рукопожатия (знакомства сервера с клиентом). Реализуем его с помощью приватного метода String serverHandshake(Connection connection) throws IOException, ClassNotFoundException . Метод в качестве параметра принимает соединение connection, а возвращает имя нового клиента. Реализация метода должна: 1) Сформировать и отправить команду запроса имени пользователя 2) Получить ответ клиента 3) Проверить, что получена команда с именем пользователя 4) Достать из ответа имя, проверить, что оно не пустое и пользователь с таким именем еще не подключен (используй connectionMap) 5) Добавить нового пользователя и соединение с ним в connectionMap 6) Отправить клиенту команду информирующую, что его имя принято 7) Если какая-то проверка не прошла, заново запросить имя клиента 8) Вернуть принятое имя в качестве возвращаемого значения Требования: • В классе Handler должен присутствовать метод private String serverHandshake(Connection connection). • Метод serverHandshake должен отправлять запрос имени используя метод send класса Connection. • До тех пор, пока тип сообщения полученного в ответ не будет равен MessageType.USER_NAME, запрос имени должен быть выполнен снова. • В случае, если в ответ пришло пустое имя, запрос имени должен быть выполнен снова. • В случае, если имя уже содержится в connectionMap, запрос имени должен быть выполнен снова. • После успешного проведения всех проверок, метод serverHandshake должен добавлять новую пару (имя, соединение) в connectionMap и отправлять сообщение о том, что имя было принято. • Метод serverHandshake должен возвращать имя нового клиента с которым было установлено соединение.