Files
Chat/Техническое задание.md
2025-03-17 14:43:12 +04:00

23 lines
2.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# NodeJS Мессенджер
## Основные требования к логике работы приложения:
1. Реализовать при помощи *любой* БД хранение последних 20 сообщений, которые были отправлены пользователями сайта
> Реализовывать регистрацию или какую бы то ни было идентификацию пользователя не надо
2. Сообщения должны приходить по WebSocket всем активным пользователям сайта в режиме live в виде "дельты"
> Как только произошел POST запрос, это же сообщение рассылается всем активным пользователям
3. Отправку сообщения отдельным POST запросом
> Других REST запросов быть на сайте не должно
4. Как только развернулся клиент, он должен установить WebSocket соединение с backend-ом и запросить snapshot всех актуальных сообщений на данный момент и впоследствии их редактировать с каждой новой "дельтой"
## Требования к оформлению:
1. Использовать **React** + *любые другие библиотеки*
2. *Дизайн может быть простым* и даже минималистичным, но *с логичным расположением* кнопок и появлением сообщений
3. Любыми анимациями или улучшенным визуалом можно пренебречь, но будет плюсом, если такое будет реализованно
## На что будет обращено внимание:
- ***Реализация REST/WS части***
- Отказоустойчивость ws соединения
> То есть сообщения не должны теряться. Не должно быть такого, чтоб была необходимость обновлять сайт, чтоб увидеть новые сообщения
- Добавление/удаление сообщений на бэке должно быть выполнено за O(1) по времени
- Вещание должно быть выполнено за O(N) N - кол-во активных слушателей