ライブアップデート

APIと同じホストにWebSocketを開くと、レコードが変更されたときにFóirがアプリケーションに通知します。各イベントには変更されたもののIDが含まれ、SDKはそれをクエリキャッシュの更新に変換できます。

1つのソケットと同じキー

サブスクリプションは、APIと同じホストでgraphql-wsプロトコルを使い、クエリやミューテーションと同じAPIキーを使います。認証情報は接続が開いたときに送られ、内容はキーと、サインイン済みのユーザーがいる場合はそのユーザーのアクセストークンです。1つのソケットは、最大32のライブサブスクリプションを保持できます。

購読できるもの

recordChangedは、1つのモデルのレコードの変更を報告します。ほかのサブスクリプションは、呼び出し元自身の通知、バックグラウンドジョブの進捗、そして1つのオペレーションの実行を対象とします。モデルの監視にはその読み取りと同じ読み取り権限が必要で、レコードがユーザーごとに非公開のモデルでは、ストリームは呼び出し元自身のレコードに絞り込まれます。

イベントが運ぶのはID

レコードイベントは、アクション(created、updated、published、unpublished、deleted)、レコードのID、そのモデルを示します。何が変わったかを特定するだけでコンテンツは含まないため、レコードは通常のAPIで読み取ります。各イベントにはシーケンス番号もあり、プロジェクトごとにコミット順で振られます。購読時に適用済みの最大の番号を渡すと、サーバーは見逃した分を永続ログから再送してから、ライブに戻ります。

SDKのサブスクリプションクライアント

型付きSDKは、各モデルにonChangeメソッドを提供し、購読解除用のハンドルを返します。最初のサブスクリプションでソケットを開き、最後の1つが終わると閉じます。接続が切れた場合は、指数バックオフで再接続し、ライブのサブスクリプションを再送します。

ライブモジュール

@foir/sdk/liveは、変更ストリームをクエリキャッシュにつなぎ、Reactバインディングもあります。編集では、そのレコードを保持していたクエリだけが再取得され、削除はメモリ上で反映され、作成は件数として報告されます。オプトインはモデルごとです。

詳細を読む

サブスクリプションのガイドで、エンドポイント、各サブスクリプションとそのイベントフィールド、ライブモジュールを説明しています。