c.Apps.Realtime(ctx, appID) は、アプリのログ、ステータス、システムイベントのライブストリームを開き、*squarecloud.Realtime を返します。これはイテレーターです。エラーが返されるまでループで Next を呼び出し、必ず Close してください。
Realtime に渡した ctx がストリーム全体を管理します。Next は引数を取りません。Next でブロックしているループを別の goroutine から止めるには、その ctx をキャンセルします。
イベント
すべてのRealtimeEvent は Event、Data (フレームの生のテキスト)、ID (最後のイベント ID。ない場合は "") を持ちます。
Status 構造体
ストリームの終了
Next は次の場合に io.EOF を返します:
- サーバーが接続を正常に閉じた (各接続は最大 10 分間続きます);
- サーバーが
REALTIME_DISCONNECTEDを送信した (イベントが先に配信され、その後io.EOFが返されます); Closeを呼び出した。
Realtime に渡した ctx がキャンセルされるか期限を過ぎると、Next は *APIError ではなく素の ctx.Err() (context.Canceled または context.DeadlineExceeded) を返します。自分でループを抜けるには break するだけです。defer した Close が接続を解放します。
10 分を超えて監視を続けるには、ループが終了したときに Realtime を再度呼び出してください。
再接続
接続が切断された場合や、サーバーがクライアントに再接続を委ねた場合 (REALTIME_RECONNECT)、ストリームは自動的に再び開かれます:
- 連続 3 回まで。
logsまたはstatusのイベントを受け取るとカウントはリセットされます; - API のペース (アプリごとに 5 秒に 1 回の接続) を下回るよう、各再接続は前回の接続から最低 5.5 秒空けて行われます。
Status は再接続後も保持されます。再接続に 3 回失敗すると、Next は NETWORK_ERROR (ステータス 0) の *APIError を返します。
制限とエラー
- 同時接続数は、全ユーザー合計でアカウントごとに 5、アプリごとに 30 です。超えると 429
REALTIME_MAX_CONNECTIONSまたはREALTIME_MAX_CONNECTIONS_APPになります。 - HTTP ステータスはストリーミングの前にチェックされるため、これらのエラー (および不明なアプリに対する 404) は最初の
Nextの前にRealtime自体から返されます。 ctxに期限がない場合、WithTimeoutの期限は接続を開く処理、つまりレスポンスヘッダーが届くまでにのみ適用されます (届かなければTIMEOUT)。ストリーム自体にはctx以外の期限はありません。
次のステップ
Snapshot
アプリとデータベースをバックアップして復元します。
リアルタイム API リファレンス
このストリームが呼び出す REST endpoint。
CLI でログを表示
同じストリームをターミナルで表示します。

