Ir al contenido

Realtime

Realtime es un fanout dentro del daemon del Cloud: POST …/realtime/publish entrega un evento (canal, nombre, payload JSON) a cada suscriptor conectado a ese canal en ese instante por GET …/realtime/sse. Ese es todo el mecanismo.

  • Los eventos existen solo mientras el daemon corre y solo para los suscriptores conectados al publicar, más una reproducción en memoria de cortesía de los últimos 64 eventos por canal para clientes que reconectan con Last-Event-ID.
  • La entrega es como máximo una vez, sin acuse. Nada se escribe en ningún directorio Native; un reinicio descarta cada suscriptor y cada evento en búfer. No es un feed de cambios de Native ni un WAL.
  • El canal system lo emiten las rutas del Cloud después de actuar — project.woke, project.slept, storage.object.stored, storage.object.deleted, snapshot.created, project.restored — y no admite publicaciones.
Nombre de canal 1–64 caracteres: a-z 0-9 . _ -
Nombre de evento 1–64 caracteres: a-z A-Z 0-9 . _ - :
Payload 32 KiB de JSON
Canales por conexión 16
Conexiones por credencial 32
Stream inactivo se cierra tras CLOUDD_REALTIME_IDLE_SECS (300 s) sin eventos; los comentarios keep-alive cada 15 s no cuentan

Tanto la sesión del propietario como una clave de proyecto viva pueden publicar y suscribirse. Revocar una clave cierra sus streams abiertos de inmediato. No hay transporte WebSocket, ni orden entre canales, ni fanout entre hosts: un host, un daemon.