Описание проекта
С технической стороны ожидаем транспорт на WebSocket для живой доставки, с разумным запасным вариантом и автоматическим переподключением при обрыве связи. Сообщения должны сохраняться в базе, чтобы история корректно подгружалась при повторном открытии чата, а доставка была упорядоченной и без дублей даже при нестабильной сети. Нужны индикатор набора текста, статусы «доставлено» и «прочитано» по каждому сообщению, счётчики непрочитанного по диалогам и присутствие (онлайн, был в сети). Важны вложения: пользователь должен уметь отправлять изображения и документы с превью и безопасным ограничением размера. Когда получатель офлайн или вкладка закрыта, push-уведомление сообщит о новом сообщении. Бэкенд должен опираться на наши текущие учётные записи и права доступа, а не вводить отдельную систему авторизации.
Безопасность и защиту от злоупотреблений считаем частью задачи: аутентифицированные сокет-соединения, привязанные к активной сессии, проверка прав (пользователь читает только те треды, где он участник), очистка ввода от XSS при выводе сообщений и базовый rate limiting против флуда. Ждём чистый документированный код в нашем текущем стеке, короткую инструкцию по интеграции и тесты на основные сценарии.
— Личные и групповые чаты с управлением участниками
— Доставка по WebSocket с переподключением и офлайн-фолбэком
— Индикатор набора, статусы доставки/прочтения, счётчики непрочитанного, присутствие
— Вложения-изображения и документы с превью и лимитом размера
— Push-уведомления для офлайн-получателей
— История, порядок, дедупликация и сохранение сообщений
— Сокеты по сессии, проверка прав по тредам, защита от XSS, rate limiting