Durable Object 名前空間は、同じ Durable Object class を基盤とする Durable Object の集合です。クラスごとに Durable Object 名前空間は 1 つだけです。1 つの Durable Object 名前空間には、任意の数の Durable Object を含められます。
DurableObjectNamespace インターフェイスは、新規または既存の Durable Object への参照を取得するために使います。Cloudflare Worker の fetch ハンドラーから、env パラメーター経由でアクセスします。env は、Wrangler 設定ファイル で宣言したバインディングを参照するときの標準インターフェイスです。
このインターフェイスには、Durable Object の ID を作成する メソッド がいくつかあります。ID を作成しても、Durable Object 自体は作成されません。Durable Object は、DurableObjectNamespace::get を呼んで DurableObjectId から DurableObjectStub を作ったあと、遅延作成されます。実際にアクセスされるまでオブジェクトが構築されないようにするためです。
import { DurableObject } from "cloudflare:workers";
// Durable Object
export class MyDurableObject extends DurableObject {
...
}
// Worker
export default {
async fetch(request, env) {
// A stub is a client Object used to invoke methods defined by the Durable Object
const stub = env.MY_DURABLE_OBJECT.getByName("foo");
...
}
}import { DurableObject } from "cloudflare:workers";
export interface Env {
MY_DURABLE_OBJECT: DurableObjectNamespace<MyDurableObject>;
}
// Durable Object
export class MyDurableObject extends DurableObject {
...
}
// Worker
export default {
async fetch(request, env) {
// A stub is a client Object used to invoke methods defined by the Durable Object
const stub = env.MY_DURABLE_OBJECT.getByName("foo");
...
}
} satisfies ExportedHandler<Env>;from workers import DurableObject, WorkerEntrypoint
# Durable Object
class MyDurableObject(DurableObject):
pass
# Worker
class Default(WorkerEntrypoint):
async def fetch(self, request):
# A stub is a client Object used to invoke methods defined by the Durable Object
stub = self.env.MY_DURABLE_OBJECT.getByName("foo")
# ...idFromName は、Durable Object クラスの個別インスタンスを指す一意の DurableObjectId を作成します。名前付き Durable Objects は、Durable Object を参照する最も一般的な方法です。
const fooId = env.MY_DURABLE_OBJECT.idFromName("foo");
const barId = env.MY_DURABLE_OBJECT.idFromName("bar");- Durable Object の名前に対応する
DurableObjectIdを生成するための必須の文字列。
- Durable Object クラスのインスタンスを指す
DurableObjectId。
newUniqueId は、Durable Object クラスの個別インスタンスを指す、ランダム生成の一意な DurableObjectId を作成します。newUniqueId で作った ID は、あとから同じ Durable Object を参照するために、文字列として保存する必要があります。たとえば、Workers KV、別の Durable Object、またはユーザーのブラウザーの cookie に保存できます。
const id = env.MY_DURABLE_OBJECT.newUniqueId();
const euId = env.MY_DURABLE_OBJECT.newUniqueId({ jurisdiction: "eu" });- キー
jurisdictionと 管轄 文字列の値を持つ、任意のオブジェクト。
- Durable Object クラスのインスタンスを指す
DurableObjectId。
idFromString は、以前生成され文字列に変換された ID から DurableObjectId を作成します。ID が無効な場合(たとえば、同じ DurableObjectNamespace から作られていない場合)、このメソッドは例外を投げます。
// 新しい一意の ID を作成する
const id = env.MY_DURABLE_OBJECT.newUniqueId();
// ID を文字列に変換し、セッション Cookie など別の場所に保存する
const session_id = id.toString();
...
// 文字列から ID を再作成する
const id = env.MY_DURABLE_OBJECT.idFromString(session_id);newUniqueIdまたはidFromNameで以前生成したDurableObjectIdに対応する必須の文字列。
- Durable Object クラスのインスタンスを指す
DurableObjectId。
get は DurableObjectId から DurableObjectStub を取得し、Durable Object のメソッドを呼び出せるようにします。
このメソッドは スタブ をすぐに返します。多くの場合、Durable Object への接続が確立される前です。ネットワークの往復を待たずに、インスタンスへすぐにリクエストを送れます。
const id = env.MY_DURABLE_OBJECT.newUniqueId();
const stub = env.MY_DURABLE_OBJECT.get(id);- 必須の
DurableObjectId - キー
locationHintと locationHint 文字列の値を持つ、任意のオブジェクト。
- Durable Object クラスのインスタンスを指す
DurableObjectStub。
getByName は指定した名前から DurableObjectStub を取得し、Durable Object のメソッドを呼び出せるようにします。
このメソッドは スタブ をすぐに返します。多くの場合、Durable Object への接続が確立される前です。ネットワークの往復を待たずに、インスタンスへすぐにリクエストを送れます。
const fooStub = env.MY_DURABLE_OBJECT.getByName("foo");
const barStub = env.MY_DURABLE_OBJECT.getByName("bar");- 指定した名前の Durable Object クラスインスタンスに対応する
DurableObjectStubを生成するための必須の文字列。 - キー
locationHintと locationHint 文字列の値を持つ、任意のオブジェクト。
- Durable Object クラスのインスタンスを指す
DurableObjectStub。
jurisdiction は名前空間からサブ名前空間を作成します。そのサブ名前空間から作るすべての Durable Object ID と参照は、指定した 管轄 に制限されます。
const subnamespace = env.MY_DURABLE_OBJECT.jurisdiction("eu");
const euStub = subnamespace.getByName("foo");- 必須の 管轄 文字列。
- 特定の規制上または地理的な管轄にスコープした
DurableObjectNamespace。追加の地理的管轄は継続的に評価されています。Durable Objects Discord チャネル ↗ でリクエストを共有してください。