コンテンツにスキップ

予約済みメソッド

いくつかのメソッド名は予約されているか、特別な意味を持っています。

特別なメソッド

後方互換性のために、WorkerEntrypoint または DurableObject を拡張する際、以下のメソッド名には特別な意味があります。これは RpcTarget には適用されないことに注意してください。RpcTarget では、これらのメソッドは他のRPCメソッドと同様に機能します。

fetch()

fetch() メソッドは特別に扱われます — HTTPリクエストを処理するためにのみ使用でき、fetch handler に相当します。

WorkerEntrypoint を拡張するクラスに fetch() メソッドを実装することができますが、これは Request 型のパラメータを1つだけ受け入れ、Response のインスタンス、またはその Promise を返さなければなりません。

クライアント側では、サービスバインディングまたは Durable Object スタブで呼び出された fetch() は、標準のグローバル fetch() のように機能します。つまり、呼び出し元は fetch() に1つまたは2つのパラメータを渡すことができます。呼び出し元が単一の Request オブジェクトを単に渡さない場合、新しい Request が暗黙的に構築され、そのパラメータがコンストラクタに渡され、そのリクエストが実際にサーバーに送信されます。

Request のいくつかのプロパティは、クライアント側の fetch() の動作を制御し、実際にはサーバーに送信されません。たとえば、プロパティ redirect: "auto"(デフォルト)は、サーバーがリダイレクトレスポンスを返した場合に自動的に従うように fetch() に指示し、結果としてパブリックインターネットへのHTTPリクエストが行われます。この動作は Fetch API 標準に従っています。要するに、fetch() はRPCの意味を持たず、Fetch APIの意味を持っています。

connect()

WorkerEntrypoint クラスの connect() メソッドは、Workerへのソケットのような接続を開くために予約されています。これは現在実装されておらず、サポートされていません — ただし、WorkerからTCPソケットを開く ことや、Hyperdrive を使用してTCPソケット経由でデータベースに直接接続することはできます。

禁止されたメソッド名

以下のメソッド(またはプロパティ)名は、いかなるRPCタイプ(WorkerEntrypointDurableObject、および RpcTarget を含む)でもRPCメソッドとして使用できません:

  • dup: これはスタブを複製するために予約されています。dup() について詳しくは RPCライフサイクル ドキュメントを参照してください。
  • constructor: この名前はJavaScriptクラスに特別な意味を持ちます。メソッドとして呼び出されることを意図していないため、RPCでは許可されていません。

以下のメソッドは WorkerEntrypointDurableObject では禁止されていますが、RpcTarget では許可されています。これらのメソッドは、Durable Objectsに特別な意味を持ち、特定のシステム生成イベントを処理するために使用されてきました。

  • alarm
  • webSocketMessage
  • webSocketClose
  • webSocketError