Необходимо дополнить реализованные в задаче 4 клиент и сервер поддержкой протокола WebSocket.
Возможны два варианта реализации задачи:
WebSocket используется только для отправки событий от сервера к клиенту, вместо поллинга по адресу /messages.
WebSocket используется для передачи всех сообщений между клиентом и сервером.
В любом варианте реализации должен отсутствовать поллинг (периодические запросы к серверу о новых сообщениях).
Для реализации допускается использовать готовые библиотеки и фреймворки для работы с WebSocket как на стороне сервера, так и на стороне клиента.
Поскольку WebSocket — протокол с состоянием сессии, то имеет смысл проводить аутентификацию один раз за сессию, а не каждого сообщения в рамках сессии.