Sign inGet started

Canaux cache

Un canal cache mémorise son dernier événement et le rejoue à chaque nouvel abonné. Un client qui se connecte après une mise à jour peut afficher l'état actuel sans attendre une nouvelle publication.
Utilisez les canaux cache pour des valeurs actuelles comme un score de match, un état d'appareil, une progression de build ou un statut de commande. L'abonnement fournit l'état initial puis les mises à jour suivantes.

Nommer un canal cache

Le nom du canal active la mise en cache. Placez cache- au début du nom ou directement après son préfixe de type de canal.
NomEn cacheAbonnement
cache-ordersouitoute personne disposant de la clé d'app
private-cache-ordersouivotre backend signe pour le client
presence-cache-lobbyouivotre backend signe, membres suivis
orders-cachenontoute personne disposant de la clé d'app
orders-cache n'est pas un canal cache. Le préfixe cache- doit précéder le nom après tout préfixe private- ou presence-.
Tout le reste du canal est inchangé. Un canal private-cache- s'autorise exactement comme un canal privé, et un canal presence-cache- continue de suivre les membres et de déclencher les événements de membres comme tout autre canal de présence.

Abonnement

const bird = new BirdRealtime({ appKey: "your-app-key", region: "us1" });

const match = bird.subscribe("cache-match-42");

match.bind("score-updated", (data) => {
  render(data);
});

match.bind("bird:cache_miss", () => {
  console.log("nothing cached for this channel yet");
});
En cas de hit, l'événement en cache arrive après la réussite de l'abonnement. Il porte le nom d'événement et le payload d'origine, de sorte que le même handler traite les événements en cache et les événements en direct.
En cas de miss, le client reçoit bird:cache_miss sur ce canal. Soit le canal n'a jamais reçu de publication, soit son événement en cache a expiré.

Remplir le cache en cas de miss

Si un endpoint s'abonne à realtime.cache_channels, le miss atteint également votre serveur. Traitez le webhook en lisant l'état actuel et en le publiant sur le canal.
await bird.realtime.publish(appId, {
  event: "score-updated",
  channels: ["cache-match-42"],
  data: await currentScore(42),
});
Le client à l'origine du miss est abonné avant que votre serveur ne publie l'événement de remplacement, il reçoit donc le nouvel état. Ce flux remplit également un cache vide pour son premier abonné.

Contenu du cache et rétention

Les événements publiés via le API sont mis en cache, y compris les publications unitaires et par lot. Les événements client dont le nom commence par client- ne sont pas mis en cache.
Les événements en cache peuvent rester disponibles jusqu'à 30 minutes, mais ils peuvent expirer plus tôt. Rechargez les canaux rarement mis à jour depuis le webhook de cache-miss au lieu de supposer que le cache est encore actif.
Chaque canal ne mémorise que son événement le plus récent. Si vous publiez score-updated puis match-ended, un nouvel abonné ne reçoit que match-ended. Utilisez un seul nom d'événement par canal cache, ou incluez l'état complet dans chaque payload.

Limitations du cache

Un canal cache ne stocke que l'événement le plus récent. Il ne conserve pas d'historique d'événements. Un client qui manque deux mises à jour hors ligne reçoit le dernier état sans l'événement intermédiaire. Conservez l'état durable dans votre base de données. Après reconnexion, le client se réabonne et affiche l'événement en cache s'il est encore disponible. Consultez Publication d'événements pour les garanties de livraison.

Étapes suivantes