Как обеспечить сохранение истории диалога при перезапуске WebSocket сервера?

История должна храниться вне памяти WebSocket-процесса — в долговечной БД. После переподключения клиент запрашивает сообщения после последнего подтверждённого номера или курсора.

Короткий ответ

Что ответить на собеседовании

История должна храниться вне памяти WebSocket-процесса — в долговечной БД. После переподключения клиент запрашивает сообщения после последнего подтверждённого номера или курсора.

Подробный разбор

Ответ с пояснениями

История должна храниться вне памяти WebSocket-процесса — в долговечной БД. После переподключения клиент запрашивает сообщения после последнего подтверждённого номера или курсора.

Назначайте сообщениям стабильные ID и порядок внутри диалога. Подтверждение успешного приёма отправляйте после сохранения; повторную отправку дедуплицируйте по клиентскому ID. При реконнекте клиент передаёт последний полученный курсор, а сервер дочитывает пропущенное с проверкой доступа. Redis Pub/Sub может помогать доставлять live-события между серверами, но сам по себе не является историей. Нужны также правила для разрыва между чтением истории и подпиской на новые сообщения, чтобы не пропускать события.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее