Documentación/ Backend as a Service/ Tiempo real (Centrifugo)

Tiempo real (Centrifugo)

Mensajería WebSocket en tiempo real con canales, presencia y pub/sub.

Crear un servidor en tiempo real

Para crear una instancia en tiempo real:

  1. Ve a Servidores en tiempo real en el panel de control de sh0.
  2. Haz clic en Crear servidor en tiempo real.
  3. Introduce un nombre (por ejemplo, "my-app-realtime").
  4. Haz clic en Crear. sh0 despliega una instancia de Centrifugo con SSL automático.

Tu servidor en tiempo real es accesible de inmediato en wss://<name>.sh0.app/connection/websocket.

Canales

Los canales son la abstracción principal de Centrifugo. Los clientes se suscriben a canales y reciben los mensajes publicados en ellos. Los nombres de canal son cadenas de texto — tú defines la convención de nombres.

Espacios de nombres

Usa los espacios de nombres de canales para agrupar canales con una configuración compartida. Por ejemplo, los canales llamados chat:room-1 y chat:room-2 pertenecen al espacio de nombres chat (con : como separador).

Configura a nivel de espacio de nombres la retención del historial, el seguimiento de presencia y los permisos en la configuración de Centrifugo.

Presencia

Activa la presencia en un canal para saber qué usuarios están suscritos en ese momento. La información de presencia incluye el ID del cliente y el ID del usuario. Útil para:

  • Mostrar quién está en línea en una sala de chat.
  • Mostrar los colaboradores activos en un documento.
  • Seguir el número de espectadores de una transmisión en vivo.

API de publicación

Publica mensajes desde tu backend en cualquier canal mediante la 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 clave de API se genera al crear el servidor en tiempo real y es visible en el panel de control.

Tip
La API de publicación es un simple HTTP POST — llámala desde cualquier lenguaje de backend. Tu servidor no necesita ninguna conexión WebSocket.

Cliente JavaScript

Instala el cliente JavaScript de Centrifugo:

npm install centrifuge

Conéctate y suscríbete:

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();

Autenticación

Centrifugo admite autenticación basada en JWT. Al crear la conexión del cliente, pasa un token:

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

El token debe contener el claim sub (subject) del usuario. Si usas el servicio de autenticación de sh0 (Logto), el token de acceso funciona directamente.

Panel de administración

Centrifugo incluye un panel de administración integrado para monitorear tu servidor en tiempo real. Accede a él desde el dominio de tu servidor en tiempo real. El panel muestra:

  • El número de conexiones activas.
  • El rendimiento en mensajes por segundo.
  • Los canales activos y su número de suscriptores.
  • La información de los nodos del servidor y su estado de salud.