Skip to main content
c.Apps.Realtime(ctx, appID) öffnet einen Live-Stream der Logs, des Status und der Systemereignisse einer App und gibt einen *squarecloud.Realtime zurück. Es ist ein Iterator: Rufe Next in einer Schleife auf, bis es einen Fehler zurückgibt, und schließe ihn immer mit Close.
Der an Realtime übergebene ctx steuert den gesamten Stream: Next nimmt keine Argumente. Um eine in Next blockierte Schleife aus einer anderen Goroutine zu stoppen, brich diesen ctx ab.

Ereignisse

Jedes RealtimeEvent hat Event, Data (den rohen Text des Frames) und ID (die ID des letzten Ereignisses, "", wenn keine vorhanden ist).

Das Struct Status

Den Stream beenden

Next gibt io.EOF zurück, wenn:
  • der Server die Verbindung sauber schließt (jede Verbindung dauert bis zu 10 Minuten);
  • der Server REALTIME_DISCONNECTED gesendet hat (zuerst wird das Ereignis zugestellt, dann io.EOF);
  • du Close aufgerufen hast.
Wird der an Realtime übergebene ctx abgebrochen oder läuft seine Deadline ab, gibt Next das reine ctx.Err() zurück (context.Canceled oder context.DeadlineExceeded), keinen *APIError. Um die Schleife selbst zu verlassen, genügt ein break: Das aufgeschobene Close gibt die Verbindung frei. Um länger als 10 Minuten zuzusehen, rufe Realtime erneut auf, wenn die Schleife endet.

Neuverbindung

Eine abgebrochene Verbindung, oder wenn der Server die Neuverbindung an den Client übergibt (REALTIME_RECONNECT), öffnet den Stream von selbst erneut:
  • bis zu 3 Mal hintereinander; jedes logs- oder status-Ereignis setzt den Zähler zurück;
  • jedes erneute Öffnen mindestens 5,5 s nach dem vorherigen, um unter dem Takt der API von einem Öffnen pro 5 Sekunden pro App zu bleiben.
Der zusammengeführte Status bleibt über Neuverbindungen hinweg erhalten. Nach 3 fehlgeschlagenen Neuverbindungen gibt Next einen *APIError mit NETWORK_ERROR (Status 0) zurück.

Limits und Fehler

  • 5 gleichzeitige Verbindungen pro Konto und 30 pro App, über alle Benutzer hinweg. Eine Überschreitung ergibt 429 REALTIME_MAX_CONNECTIONS oder REALTIME_MAX_CONNECTIONS_APP.
  • Der HTTP-Status wird vor dem Streaming geprüft, daher werden diese Fehler (und 404 für eine unbekannte App) von Realtime selbst zurückgegeben, noch vor dem ersten Next.
  • Hat ctx keine Deadline, deckt die Deadline von WithTimeout nur das Öffnen ab, bis die Antwort-Header eintreffen (TIMEOUT, wenn sie nicht eintreffen). Der Stream selbst hat außer ctx keine Deadline.

Nächste Schritte

Snapshots

Apps und Datenbanken sichern und wiederherstellen.

API-Referenz für Realtime

Der REST-Endpunkt hinter diesem Stream.

Logs über die CLI

Derselbe Stream im Terminal.