Skip to main content
開発者向けドキュメントを表示しています
このドキュメントは、Base44 開発者プラットフォームで作業する開発者向けです。
アプリのバックエンドで実行される Actor クラスの完全なリファレンスです。セッションに接続するクライアント SDK については、actors SDK リファレンス を参照してください。 アクターの概念と用語については、アクター概要 を参照してください。

必須のハンドラー

Actor クラスは抽象クラスです。次の各ハンドラーの本体を実装します。これらのハンドラーは、クライアントとタイマーからのイベントに応答します。

省略可能なハンドラー

アクターで必要な場合は、次のハンドラーを実装します。 セッションで tick を使う場合は、tickIntervalMs を設定します。shouldTick() を省略すると、セッションは tick しません。

呼び出せるメソッド

アクタークラスには組み込みの機能があります。アクターのハンドラーを実装するときに、次のメソッドを使用できます。 エンティティ の読み書きには this.client を使用します。

クラス宣言

base44:runtime/actors から Actor をインポートし、Actor を継承したクラスを base44/actors/<actor-name>/entry.ts からデフォルトエクスポートとしてエクスポートします。 フォルダー名は SDK でのアクター名になります。設定の詳細については、アクターを作成する を参照してください。
generic
接続中のクライアントからアクターが受信するメッセージの型です。 handleMessage() の msg パラメーターに適用されます。
generic
アクターが接続中のクライアントに送信するメッセージの型です。 conn.send() と broadcast() に適用されます。

ランタイム API

アクターは base44:runtime/actors モジュールから Actor クラスをインポートします。

シークレットを読み取る

ハンドラーからアプリの環境変数を読み取るには、secrets.get() を使用します。このメソッドは値を文字列として返します。シークレットが設定されていない場合は undefined を返します。 base44:runtime モジュールから secrets をインポートします。
シークレットは、CLI から secrets set で設定します。 シークレットが必要な処理には、バックエンド関数 を呼び出すことをおすすめします。関数がシークレットを読み取って結果を返すため、アクターはシークレットを受け取りません。サンプルフローについては、シークレットが必要な処理でバックエンド関数を呼び出す を参照してください。

ライフサイクルハンドラー

Base44 は、セッション内のクライアントのアクティビティに応じて、これらのハンドラーを呼び出します。 各ハンドラーの本体は自分で実装します。 詳しくは アクターとクライアントのやり取り を参照してください。 サンプルフローについては、クライアント接続を管理する を参照してください。
method
セッションがアクティブになるたびに実行されます。たとえば次の場合です。
  • セッションが最初に作成されたとき。
  • クライアントがアイドル状態のセッションに接続したとき。
  • アイドル状態のセッションにメッセージが届いたとき。
  • スケジュールした時刻になったとき。
void または Promise<void> を返します。
method
必須
クライアントがセッションに接続したときに実行されます。 conn.send() で現在のセッション状態を送信するか、conn.reject() で接続を拒否できます。 void または Promise<void> を返します。
method
必須
接続中のクライアントがメッセージを送信したときに実行されます。 セッション状態を変更したりアプリのデータにアクセスしたりする前に、メッセージを検証できます。 void または Promise<void> を返します。
method
必須
クライアントが切断したときに実行されます。 このハンドラーを使って、接続 ID に関連付けられたセッション状態を削除します。 同じ ID を再利用する再接続は、handleClose() を実行せずに古いソケットを置き換えます。 void または Promise<void> を返します。

タイマーハンドラーと設定

これらのハンドラーと設定は、セッション内の時間指定の処理を制御します。 Base44 は、クライアントのアクティビティではなく、スケジュールした時刻になったときにこれらを呼び出します。 詳しくは スケジュールされた処理 を参照してください。 サンプルフローについては、tick を実行する と wake をスケジュールする を参照してください。
method
必須
shouldTick() が true を返し、セッションに少なくとも 1 つのクライアントがある間、間隔ごとに 1 回実行されます。 void または Promise<void> を返します。
number
tick の間隔をミリ秒で指定します。デフォルトは 100 です。
method
boolean を返します。セッションの tick を続けるには true を、停止するには false を返します。このメソッドは同期的です。このメソッドは高速に保ち、副作用を持たせないでください。Base44 は、各接続、メッセージ、切断、tick の後にこのメソッドを呼び出します。
method
schedule() で設定した時刻になったときに 1 回実行されます。 void または Promise<void> を返します。
method
指定した時刻に handleWake() を 1 回実行するようスケジュールします。 Base44 がスケジュールを保存した後に完了する Promise を返します。 スケジュールはアイドル期間をまたいで保持され、アイドル状態のセッションを開始できます。 同じキーでこのメソッドを再度呼び出すと、スケジュールした時刻が置き換えられます。
method
キーに関連付けられたスケジュール済みの wake をキャンセルします。 Base44 がスケジュールをクリアした後に完了する Promise を返します。

接続

これらのプロパティとメソッドは、クライアントが関わるライフサイクルハンドラーに渡される conn オブジェクトで使用できます。 これらを使って、クライアントの ID の読み取り、メッセージの送信、接続の管理を行います。 メッセージングの概要については、リアルタイムメッセージ を参照してください。 サンプルフローについては、クライアント接続を管理する を参照してください。
conn は WebSocket のバックエンド側の端で、クライアントの Connection は同じソケットのもう一方の端です。アクタークラスでは conn を使用します。クライアントオブジェクトについては、actors SDK リファレンスを参照してください。
string
この接続を識別します。クライアントが接続時に渡した ID、 または SDK が生成した ID と一致します。
object
この接続のクライアントを識別します。すべての 接続に存在します。
method
この接続にメッセージを送信します。void を返します。
method
handleConnect() から接続を拒否します。void を返します。
method
セッション内のすべてのライブ接続にメッセージを送信します。void を返します。
method
セッション内のライブな conn オブジェクトの配列を返します。 handleStart() でこのメソッドを使うと、復元したデータを、 アイドル期間中も接続を維持していたクライアントと照合できます。
string
セッションレベルのプロパティです。クライアントがこのセッションに 到達するために使用したセッション ID が含まれます。

ストレージ

セッションデータの読み書きには this.storage を使用します。クラスフィールドとは異なり、ストレージはアイドル期間をまたいで保持されます。ストレージとクラスフィールドの使い分けについては、ストレージ を参照してください。サンプルフローについては、セッションデータを永続化する を参照してください。
method
キーで値を取得します。保存された値に解決される Promise を返します。 キーが存在しない場合は undefined に解決されます。
method
キーで値を保存します。そのキーにすでに保存されている値を置き換えます。 書き込みが完了すると完了する Promise を返します。
method
キーで値を削除します。キーが存在した場合は true に、 それ以外の場合は false に解決される Promise を返します。
method
セッションの保存データをすべて削除します。ストアが空になると完了する Promise を返します。その後の接続は、新しいセッションと同じ空のストレージで 開始します。

エンティティへのアクセス

アクターのハンドラー内からアプリのエンティティを読み書きするには、this.client と this.client.asServiceRole を使用します。サンプルフローについては、セッションからエンティティデータを書き込む を参照してください。
Base44Client
このセッションにスコープされたアプリクライアントを提供します。このクライアントは 匿名認証を使用するため、エンティティへのアクセスはログアウトした クライアントと同じルールに従います。また、本番データを読み取ります。
Base44Client
行レベルセキュリティをバイパスする昇格したアクセスを提供します。このクライアントを 使う前にメッセージを検証してください。エラー後にセッションがハンドラーを再実行する 場合があるため、書き込みは繰り返しても安全なものにしてください。

関連項目

このページは AI によって翻訳されました。最も正確で最新の情報については、英語版 を参照してください。