Docs/ Backend as a Service/ Temps réel (Centrifugo)

Temps réel (Centrifugo)

Messagerie WebSocket en temps réel avec canaux, présence et pub/sub.

Créer un serveur temps réel

Pour créer une instance temps réel :

  1. Ouvrez Serveurs temps réel dans le tableau de bord sh0.
  2. Cliquez sur Créer un serveur temps réel.
  3. Saisissez un nom (par exemple « my-app-realtime »).
  4. Cliquez sur Créer. sh0 déploie une instance Centrifugo avec SSL automatique.

Votre serveur temps réel est immédiatement accessible à l'adresse wss://<name>.sh0.app/connection/websocket.

Canaux

Les canaux sont l'abstraction principale de Centrifugo. Les clients s'abonnent à des canaux et reçoivent les messages qui y sont publiés. Les noms de canaux sont des chaînes de caractères — c'est vous qui définissez la convention de nommage.

Espaces de noms

Utilisez les espaces de noms de canaux pour regrouper des canaux partageant une même configuration. Par exemple, les canaux nommés chat:room-1 et chat:room-2 appartiennent à l'espace de noms chat (avec : comme séparateur).

Configurez au niveau de l'espace de noms la rétention de l'historique, le suivi de présence et les permissions, dans la configuration de Centrifugo.

Présence

Activez la présence sur un canal pour savoir quels utilisateurs y sont actuellement abonnés. Les informations de présence comprennent l'identifiant du client et l'identifiant de l'utilisateur. Utile pour :

  • Afficher qui est en ligne dans un salon de discussion.
  • Afficher les collaborateurs actifs dans un document.
  • Suivre le nombre de spectateurs d'un direct.

API de publication

Publiez des messages depuis votre backend vers n'importe quel canal via l'API HTTP :

POST https://<name>.sh0.app/api/publish
Content-Type: application/json
Authorization: apikey <your-api-key>
{
"channel": "chat:room-42",
"data": { "text": "Hello!", "user": "alice" }
}

La clé d'API est générée à la création du serveur temps réel et elle est visible dans le tableau de bord.

Tip
L'API de publication est une simple requête HTTP POST — appelez-la depuis n'importe quel langage backend. Aucune connexion WebSocket n'est nécessaire côté serveur.

Client JavaScript

Installez le client JavaScript de Centrifugo :

npm install centrifuge

Connectez-vous et abonnez-vous :

import { Centrifuge } from 'centrifuge';
const client = new Centrifuge(
'wss://my-realtime.sh0.app/connection/websocket'
);
const sub = client.newSubscription('chat:room-42');
sub.on('publication', (ctx) => {
console.log(ctx.data);
});
sub.subscribe();
client.connect();

Authentification

Centrifugo prend en charge l'authentification par JWT. Lors de la création de la connexion cliente, transmettez un jeton :

const client = new Centrifuge(
'wss://my-realtime.sh0.app/connection/websocket',
{ token: jwtToken }
);

Le jeton doit contenir la revendication sub (subject) de l'utilisateur. Si vous utilisez le service d'authentification de sh0 (Logto), le jeton d'accès fonctionne directement.

Tableau de bord d'administration

Centrifugo intègre un tableau de bord d'administration pour superviser votre serveur temps réel. Accédez-y depuis le domaine de votre serveur temps réel. Le tableau de bord affiche :

  • Le nombre de connexions actives.
  • Le débit de messages par seconde.
  • Les canaux actifs et leur nombre d'abonnés.
  • Les informations sur les nœuds du serveur et leur état de santé.