Skip to main content
c.Apps.Realtime(ctx, appID) apre un flusso in tempo reale dei log, dello stato e degli eventi di sistema di un’app e restituisce un *squarecloud.Realtime. È un iteratore: chiama Next in un ciclo finché non restituisce un errore, e chiudilo sempre con Close.
Il ctx passato a Realtime governa l’intero flusso: Next non accetta argomenti. Per fermare da un’altra goroutine un ciclo bloccato in Next, annulla quel ctx.

Eventi

Ogni RealtimeEvent ha Event, Data (il testo grezzo del frame) e ID (l’id dell’ultimo evento, "" se assente).

La struct Status

Terminare il flusso

Next restituisce io.EOF quando:
  • il server chiude la connessione in modo pulito (ogni connessione dura fino a 10 minuti);
  • il server ha inviato REALTIME_DISCONNECTED (prima viene consegnato l’evento, poi io.EOF);
  • hai chiamato Close.
Quando il ctx passato a Realtime viene annullato o la sua scadenza passa, Next restituisce il semplice ctx.Err() (context.Canceled o context.DeadlineExceeded), non un *APIError. Per uscire tu stesso dal ciclo, basta un break: il Close differito rilascia la connessione. Per continuare a osservare oltre i 10 minuti, chiama di nuovo Realtime quando il ciclo termina.

Riconnessione

Una connessione interrotta, o il server che delega la riconnessione al client (REALTIME_RECONNECT), riapre il flusso da sola:
  • fino a 3 volte di fila; qualsiasi evento logs o status azzera il conteggio;
  • ogni riapertura avviene almeno 5,5 s dopo l’apertura precedente, per restare sotto il ritmo dell’API di un’apertura ogni 5 secondi per app.
Lo Status unito sopravvive alle riconnessioni. Oltre 3 riconnessioni fallite, Next restituisce un *APIError con NETWORK_ERROR (status 0).

Limiti ed errori

  • 5 connessioni simultanee per account e 30 per app, considerando tutti gli utenti. Superarle produce 429 REALTIME_MAX_CONNECTIONS o REALTIME_MAX_CONNECTIONS_APP.
  • Lo status HTTP viene controllato prima dello streaming, quindi questi errori (e il 404 per un’app sconosciuta) vengono restituiti da Realtime stesso, prima del primo Next.
  • Quando ctx non ha una scadenza, la scadenza di WithTimeout copre solo l’apertura, fino all’arrivo degli header della risposta (TIMEOUT se non arrivano). Il flusso in sé non ha altra scadenza oltre a ctx.

Prossimi passi

Snapshot

Backup e ripristino di app e database.

Riferimento API realtime

L’endpoint REST dietro questo stream.

Log dalla CLI

Lo stesso stream dal terminale.