Conception d’un serveur dorsal de chat en temps réel avec gRPC
Étudiez un cas concret : concevez l’architecture d’un serveur dorsal de chat en temps réel et évolutif avec le flux bidirectionnel de gRPC, la diffusion à plusieurs destinataires et la gestion de présence.
Conception d’un serveur dorsal de chat en temps réel avec gRPC est une leçon gRPC & High Performance APIs gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage gRPC & High Performance APIs, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours gRPC & High Performance APIs comprend 4 leçons au total.
Certaines parties de cette leçon n'ont pas encore été traduites et s'affichent en anglais.
The Case Study
We design a chat backend that must deliver messages instantly to thousands of connected users. gRPC bidirectional streaming is a natural fit for this long-lived, two-way flow.
Defining the Service
The core is a bidi stream: clients send messages and receive others' messages over the same call.
service Chat {
rpc Connect(stream ClientEvent) returns (stream ServerEvent);
}Per-Connection Sessions
Each open stream is a user session. The server tracks the stream handle so it can push messages to that specific user later.
The Fan-Out Problem
When one user posts to a room, the server must deliver it to every other member's stream. This fan-out is the heart of chat scaling.
In-Process Hub
A simple design keeps a hub mapping rooms to subscriber channels. Posting iterates members and sends to each.
func (h *Hub) Broadcast(room string, msg *ServerEvent) {
for _, sub := range h.rooms[room] {
sub.outbox <- msg
}
}Scaling Past One Instance
Users on different server instances must still see each other. Introduce a message bus (Redis Pub/Sub, NATS, Kafka) so instances relay messages to one another.
Cross-Instance Flow
An instance publishes new messages to the bus; every instance subscribes and forwards to its own local connections. This decouples delivery from where users connect.
Presence and Typing
Presence (online/offline) and typing indicators are just more event types on the stream. Track last-seen timestamps and broadcast presence changes via the same fan-out path.
Backpressure per Client
A slow client must not stall the hub. Give each session a bounded outbox; if it overflows, drop or disconnect that client instead of blocking everyone.
select {
case sub.outbox <- msg:
default:
disconnect(sub) // slow consumer
}Reconnection and Delivery
Networks drop. Clients reconnect and resume from a last-seen message id. Persist recent history so missed messages can be replayed on reconnect.
Operational Concerns
Production chat needs:
- Keepalive to detect dead connections
- Authentication on connect (token in metadata)
- Metrics on active streams and fan-out latency
- Graceful drain on deploy
Quick Check
Test your chat-design knowledge.
Recap
You designed a real-time chat backend:
- Bidirectional streaming models each user session
- A hub fans out room messages to subscribers
- A message bus relays across multiple instances
- Presence/typing are extra event types; per-client backpressure protects the hub
- Reconnection replays missed messages; ops needs keepalive, auth, metrics, drain
Apprends gRPC & High Performance APIs avec un tuteur IA — gratuit
Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.
- Cours
- 12
- Leçons
- 48
Questions Fréquemment Posées
La leçon « Conception d’un serveur dorsal de chat en temps réel avec gRPC » est-elle gratuite ?
Oui — le texte complet de « Conception d’un serveur dorsal de chat en temps réel avec gRPC » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours gRPC & High Performance APIs, passe à CoddyKit PRO. Le cours gRPC & High Performance APIs comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Conception d’un serveur dorsal de chat en temps réel avec gRPC » ?
Étudiez un cas concret : concevez l’architecture d’un serveur dorsal de chat en temps réel et évolutif avec le flux bidirectionnel de gRPC, la diffusion à plusieurs destinataires et la gestion de pré… Tu pratiques gRPC & High Performance APIs avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer gRPC & High Performance APIs ?
Aucune expérience préalable n'est requise. gRPC & High Performance APIs sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.
Combien de temps prend la leçon « Conception d’un serveur dorsal de chat en temps réel avec gRPC » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon gRPC & High Performance APIs ?
Oui. Chaque leçon gRPC & High Performance APIs inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Créer des passerelles à haut débit
- Modèles avancés de résilience
- L’avenir des API hautes performances
- Conception d’un serveur dorsal de chat en temps réel avec gRPC