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