TL;DR: Durable Objects sind Single-Instance JavaScript-Klassen, die den Zustand beibehalten und über Anfragen hinweg koordinieren. Im Gegensatz zu zustandslosen Workers haben Durable Objects eine garantierte Einzigartigkeit -- für eine bestimmte ID existiert weltweit nur eine einzige Instanz. Dieser Leitfaden behandelt Anwendungsfälle (WebSocket-Räume, Rate Limiting, verteilte Zähler), den Durable Object Lebenszyklus und die Integration mit TanStack Start. Eingehendere Informationen zu WebSocket-Verbindungen in Workers finden Sie in unserem Cloudflare Workers WebSocket Guide. Vollständiger Leitfaden unter tanstackship.com.
Einführung
Workers sind von Grund auf zustandslos konzipiert. Jede Anfrage kann an ein anderes Rechenzentrum weitergeleitet werden. Für Anwendungen, die Koordination erfordern -- Chatrooms, kollaboratives Bearbeiten, verteilte Zähler -- benötigen Sie einen zentralen Koordinationspunkt. Durable Objects lösen dieses Problem, indem sie weltweit eindeutige, zustandsbehaftete Instanzen bereitstellen. Wenn Sie neu im Bereich Workers sind, bietet unsere Cloudflare Workers Introduction die nötigen Grundlagen, um die DO-Architektur zu verstehen.
Grundlegendes Durable Object
export class ChatRoom implements DurableObject {
private sessions: Map<string, WebSocket> = new Map()
async fetch(request: Request): Promise<Response> {
const url = new URL(request.url)
if (url.pathname === '/websocket') {
const pair = new WebSocketPair()
const [client, server] = Object.values(pair)
this.sessions.set(crypto.randomUUID(), server)
server.accept()
server.addEventListener('message', (event) => {
// An alle verbundenen Clients senden
this.sessions.forEach((ws) => {
ws.send(event.data as string)
})
})
return new Response(null, { status: 101, webSocket: client })
}
return new Response('Not found', { status: 404 })
}
}
Anwendungsfälle für Durable Objects
| Anwendungsfall | Zustand pro Objekt | Koordinationsmuster |
|---|---|---|
| Chatroom | Verbundene WebSockets | Broadcast an alle |
| Rate Limiter | Anfragezähler | Ablehnung bei Grenzwert |
| Spiel-Lobby | Spielerliste | Matchmaking |
| Dokumentensynchronisation | Operationsprotokoll | CRDT/OT Merge |
| Verteilter Zähler | Zählerwert | Atomares Inkrement |
Fazit
Durable Objects füllen die Lücke zwischen zustandslosen Workers und herkömmlichen Datenbanken. Sie bieten Single-Instance-Koordination für Echtzeitanwendungen. Verwenden Sie sie, wenn Sie zugesicherte Einzigartigkeit und Transaktionszustände benötigen.
Für eine schrittweise Implementierung werfen Sie einen Blick auf das Real-Time Chat Application Tutorial. Um Echtzeit-DO-Daten mit Ihrem Frontend zu verbinden, zeigt die TanStack Query WebSocket Integration, wie Sie Ihre Benutzeroberfläche mit Live-Daten synchron halten.