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.
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
JedesRealtimeEvent 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_DISCONNECTEDgesendet hat (zuerst wird das Ereignis zugestellt, dannio.EOF); - du
Closeaufgerufen hast.
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- oderstatus-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.
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_CONNECTIONSoderREALTIME_MAX_CONNECTIONS_APP. - Der HTTP-Status wird vor dem Streaming geprüft, daher werden diese Fehler (und 404 für eine unbekannte App) von
Realtimeselbst zurückgegeben, noch vor dem erstenNext. - Hat
ctxkeine Deadline, deckt die Deadline vonWithTimeoutnur das Öffnen ab, bis die Antwort-Header eintreffen (TIMEOUT, wenn sie nicht eintreffen). Der Stream selbst hat außerctxkeine 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.

