РАБОТА / МАТЕРИАЛЫ

Мессенджер Maestrosnov: состояния без отката

Разбор исходной реализации и исполняемые сценарии запоздалых событий.

MAESTROSNOV CHAT / ИНЖЕНЕРНЫЙ РАЗБОР

Прочитанное сообщение не становится «отправленным»

После обрыва связи события приходят с задержкой и в другом порядке. В мессенджере состояние объединяется по правилам: подтверждённый факт сохраняется, а запоздалый ответ не откатывает интерфейс.

Отправляется→Отправлено→Доставлено→Прочитано

Воспроизвести последовательность

Макеты готовы к просмотру.

Ещё не отправлено

Что пришло и что осталось

    Здесь выполняется исходная функция mergeChatDeliveryState. Сообщение в примере условное; отправки в настоящий чат нет.

    Квитанции не теряют прогресс

    У версии 12: доставлено троим, прочитано двумя. Затем приходит версия 11 с одним прочтением. Модуль сохраняет версию 12 и счётчики 3 / 2.

    Получено при выполнении: версия 12, доставлено 3, прочитано 2.

    Расшифровка остаётся готовой

    Готовая расшифровка версии 9 не заменяется запоздалым состоянием «обрабатывается» версии 8. Текст остаётся в сообщении.

    Получено при выполнении: ready, версия 9, «Готовая расшифровка».

    Граница этой проверки

    Разобрана клиентская логика объединения состояний из сохранённого проекта. Проверка не измеряет скорость доставки и не подтверждает работу текущего сервера. Транзакционный журнал, синхронизация по курсору и очередь расшифровки описаны отдельно в документации реализации.

    Источник и воспроизведение

    apps/web/lib/chat-sync/message-state.ts

    Коммит: 169394d389de98db629f69e1b46aef8434805c43

    SHA-256 исходника: 0aa323156959726aef81e5bb37041c7649a6a23836616f990cda0c684e526cdd

    Скачайте пять файлов ниже в одну папку и выполните node verify.cjs. Исходный TypeScript сохранён как текст; JavaScript получен удалением типов через TypeScript.