☁️
CF WIKI
← 返回产品目录 | 内容快照:2026-06-16
开发 / 计算

Durable Objects

带状态的单线程协调单元,适合强一致、实时和协作场景。

官方文档 ↗
按调用次数 + 活跃时长计费;hibernation 期间不计费。
状态强一致实时
WebSocket 房间、锁、计数器、协同编辑、游戏房间
{
  "durable_objects": {
    "bindings": [{ "name": "ROOM", "class_name": "Room" }]
  },
  "migrations": [{ "tag": "v1", "new_classes": ["Room"] }]
}
export class Room {
  constructor(state, env) { this.state = state; }
  async fetch(req) {
    const count = (await this.state.storage.get("count")) ?? 0;
    await this.state.storage.put("count", count + 1);
    return Response.json({ count: count + 1 });
  }
}

export default {
  async fetch(req, env) {
    const id = env.ROOM.idFromName("room-42");
    return env.ROOM.get(id).fetch(req);
  },
};
  • 单线程串行执行;不要在一个 DO 里跑慢任务阻塞整个房间
  • WebSocket 长连接用 acceptWebSocket + hibernation API,否则一直计费
  • idFromName 是确定性映射;不同名字对应不同实例,不要乱命名
已复制
🔍 ESC