gRPC & High Performance APIs · Leçon

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.

Leçon 4 sur 413 étapes

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
Gratuit pour commencer

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

  1. Créer des passerelles à haut débit
  2. Modèles avancés de résilience
  3. L’avenir des API hautes performances
  4. Conception d’un serveur dorsal de chat en temps réel avec gRPC
← Retour à gRPC & High Performance APIs