Skip to main content
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 でログを表示

同じストリームをターミナルで表示します。