Skip to main content
c.Apps.Realtime(ctx, appID) ouvre un flux en direct des logs, du statut et des événements système d’une application et renvoie un *squarecloud.Realtime. C’est un itérateur : appelez Next dans une boucle jusqu’à ce qu’il renvoie une erreur, et appelez toujours Close.
Le ctx passé à Realtime régit tout le flux : Next ne prend aucun argument. Pour arrêter depuis une autre goroutine une boucle bloquée dans Next, annulez ce ctx.

Événements

Chaque RealtimeEvent a Event, Data (le texte brut de la trame) et ID (l’identifiant du dernier événement, "" s’il n’y en a pas).

La struct Status

Fin du flux

Next renvoie io.EOF lorsque :
  • le serveur ferme proprement la connexion (chaque connexion dure jusqu’à 10 minutes) ;
  • le serveur a envoyé REALTIME_DISCONNECTED (l’événement est livré d’abord, puis io.EOF) ;
  • vous avez appelé Close.
Lorsque le ctx passé à Realtime est annulé ou que son échéance est dépassée, Next renvoie le ctx.Err() brut (context.Canceled ou context.DeadlineExceeded), et non une *APIError. Pour sortir vous-même de la boucle, faites simplement break : le Close différé libère la connexion. Pour continuer à observer au-delà de 10 minutes, appelez à nouveau Realtime lorsque la boucle se termine.

Reconnexion

Une connexion interrompue, ou le serveur qui confie la reconnexion au client (REALTIME_RECONNECT), rouvre le flux automatiquement :
  • jusqu’à 3 fois d’affilée ; tout événement logs ou status remet le compteur à zéro ;
  • chaque réouverture au moins 5,5 s après l’ouverture précédente, pour rester sous le rythme de l’API d’une ouverture toutes les 5 secondes par application.
Le Status fusionné est conservé à travers les reconnexions. Au-delà de 3 reconnexions échouées, Next renvoie une *APIError avec NETWORK_ERROR (statut 0).

Limites et erreurs

  • 5 connexions simultanées par compte et 30 par application, tous utilisateurs confondus. Les dépasser donne 429 REALTIME_MAX_CONNECTIONS ou REALTIME_MAX_CONNECTIONS_APP.
  • Le statut HTTP est vérifié avant la diffusion, de sorte que ces erreurs (et 404 pour une application inconnue) sont renvoyées par Realtime lui-même, avant le premier Next.
  • Lorsque ctx n’a pas d’échéance, l’échéance de WithTimeout ne couvre que l’ouverture, jusqu’à l’arrivée des en-têtes de réponse (TIMEOUT s’ils n’arrivent pas). Le flux lui-même n’a pas d’échéance en dehors de ctx.

Prochaines étapes

Snapshots

Sauvegardez et restaurez vos applications et bases de données.

Référence de l'API temps réel

L’endpoint REST derrière ce flux.

Logs depuis la CLI

Le même flux depuis le terminal.