Как спроектировать чат систему?

Middle+
655 просмотров
AFK Offer AI

Чат — это WebSocket-соединения + хранение сообщений. Каждый клиент держит WS-коннект к серверу. При отправке сообщения сервер записывает его в БД и пушит получателю через его коннект. Если получатель на другом сервере — нужен pub/sub (Redis, Kafka) между серверами. Для групповых чатов — фанаут: одно сообщение рассылается всем участникам. Историю храним в БД с пагинацией по timestamp. Статус online/offline — через heartbeat с TTL в Redis.

Следующий вопрос

Как передать данные между горутинами?