Выбор ответа Middle Мобильный system design обновлено
Догрузка пропущенных сообщений
Вопрос
Мессенджер был закрыт два дня. Как при открытии получить пропущенные сообщения эффективно?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Запросить изменения после последнего курсора пачками, начиная с недавних чатов, показывая базу. У каждого сообщения или события монотонный порядковый номер.
Варианты ответа
- Скачать заново всю историю всех чатов и заменить локальную базу целиком
- Запросить изменения после последнего курсора пачками, начиная с недавних чатов, показывая базуправильный ответ
- Ждать, пока сервер сам пришлёт все пропущенные сообщения по WebSocket одним большим сообщением после подключения
- Попросить пользователя потянуть вниз каждый чат вручную, чтобы не грузить лишнее
Разбор
У каждого сообщения или события монотонный порядковый номер. Клиент хранит последний полученный и запрашивает «всё после», постранично, сначала для чатов, которые видны в списке. UI сразу показывает локальную базу. Полная выгрузка тратит трафик и время, огромное сообщение по сокету ненадёжно.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Ещё по теме «Мобильный system design»
- Мобильный system design: SDK аналитики событий
- Мобильный system design: перевод денег в банковском приложении
- Мобильный system design: каталог и корзина маркетплейса
- Мобильный system design: лента новостей с картинками и видео
- Мобильный system design: загрузка фото и видео
- Мобильный system design: мессенджер
- Мобильный system design: заметки с синхронизацией между устройствами
- Мобильный system design: истории (stories)