Система построена на WebSocket-соединениях для двусторонней коммуникации в реальном времени. Каждый клиент поддерживает постоянное WebSocket-соединение с выделенным чат-сервером. Балансировщик нагрузки распределяет входящие соединения между несколькими чат-серверами, чтобы справиться с миллионами одновременных пользователей.
Когда пользователь отправляет сообщение:
Квитанции подтверждения отслеживают статус сообщения:
SENT — сервер получил сообщениеDELIVERED — устройство получателя его получилоREAD — получатель его открылЭто реализуется через acknowledgement-коллбэки по WebSocket или лёгкую систему pub/sub вроде Kafka для надёжной асинхронной доставки.
Поскольку WebSocket-соединения сохраняют состояние, пользователи, подключённые к разным серверам, не могут общаться напрямую. Message broker (например, Redis Pub/Sub или Kafka) служит основой, маршрутизируя сообщения между серверами.
WebSocket-соединения в распределённой платформе обмена сообщениями являются stateful, что означает, что пользователи, подключённые к разным серверам чата, не могут напрямую общаться без промежуточного message broker.
Новый — ещё не проверен сообществом
Вы