В вашу задачу входит оживить интерфейс чата:
Весь интерфейс чата сосредоточен в теге с классом chat
. Выполняйте поиск компонентов чата только в нём.
Форма отправки нового сообщения имеет класс message-box
. Поле ввода сообщения имеет класс message-input
. Кнопка «Отправить сообщение» имеет класс message-submit
.
Все новые сообщения для отображения необходимо отображать в блоке с классом messages-content
. Есть четыре типа сообщений. Их шаблоны доступны в скрытом контейнере с классом messages-templates
, у всех имеется класс message
:
- Сообщение с классом
loading
— информация о том, что собеседник сейчас печатает сообщение. - Сообщение от собеседника без дополнительного класса и сообщение от пользователя с классом
message-personal
имеют элементы с классамиmessage-text
иtimestamp
, в тела которых следует поместить текст сообщения и время добавления. - Сообщение с классом
message-status
— вывод разных уведомлений. Также имеет элемент с классамиmessage-text
для вывода текста уведомления.
Элемент с классом chat-status
. Необходимо использовать для вывода состояния чата. Если собеседник в сети, то следует подставить в тело текст из атрибута data-online
, иначе — из data-offline
.
При открытии страницы необходимо установить соединение с веб-сокетом по адресу wss://neto-api.herokuapp.com/chat
.
Если соединение успешно установлено, необходимо обновить статус чата, а также активировать кнопку «Отправить сообщение» и вывести уведомление с текстом «Пользователь появился в сети».
При получении сообщения по веб-сокет соединению необходимо проверить текст сообщения. Если он равен ...
(три точки), то необходимо отобразить информацию о том, что собеседник сейчас печатает сообщение. Если текст сообщения другой, то необходимо отобразить сообщение с этим текстом. А информацию о том, что собеседник печатает, необходимо удалить.
При отправке сообщения пользователем через форму (кнопка «Отправить сообщение» или клавиша Enter
в поле ввода сообщения) необходимо текст сообщения отправить по веб-сокет соединению и отобразить сообщение пользователя в общем списке.
Время сообщений в обоих случаях берем текущее на момент отображения. Учитывайте, что часы и минуты всегда должны иметь 2 символа, например, 09:03
.
Если соединение с веб-сокет сервером закрывается, то необходимо поменять статус чата и деактивировать кнопку «Отправить сообщение», а также вывести уведомление с текстом «Пользователь не в сети».
При реализации нельзя изменять HTML-код и CSS-стили.
Реализуйте функционал во вкладке JS.
В онлайн-песочнице на CODEPEN.
Реализацию необходимо поместить в файл ./js/chat.js
. Файл уже подключен к документу, поэтому другие файлы изменять не требуется.
В репозитории на GitHub.
Потребуется только ваш браузер.
- Открыть код в песочнице.
- Нажать кнопку «Fork».
- Выполнить задание.
- Нажать кнопку «Save».
- Скопировать адрес страницы, открытой в браузере.
- Прислать скопированную ссылку через личный кабинет на сайте netology.ru.
Потребуются: браузер, редактор кода, система контроля версий git, установленная локально, и аккаунт на GitHub или BitBucket.
- Клонировать репозиторий с домашними заданиями
git clone https://github.com/netology-code/hj-homeworks.git
. - Перейти в папку задания
cd hj-homeworks/websocket/chat
. - Выполнить задание.
- Создать репозиторий на GitHub или BitBucket.
- Добавить репозиторий в проект
git remote add homeworks %repo-url%
, где%repo-url%
— адрес созданного репозитория. - Опубликовать код в репозиторий
homeworks
с помощью командыgit push -u homeworks master
. - Прислать ссылку на репозиторий через личный кабинет на сайте netology.ru.