Building Real-time Chat with Durable Objects
Create a real-time chat application using Cloudflare Durable Objects for state management.
Advanced⏱️ 90 minutes📋 3 steps
Prerequisites
- Workers experience
- WebSocket knowledge
- JavaScript/TypeScript
Tags
durable-objectswebsocketsreal-timechat
Progress
Step 1 of 31
Set up Durable Object
Create a Durable Object class to manage chat room state.
Instructions
- Create a new Worker project
- Define a Durable Object class for chat rooms
- Configure wrangler.toml with durable_objects binding
- Implement basic state management
Code Example
export class ChatRoom {
constructor(state: DurableObjectState, env: Env) {
this.state = state;
this.sessions = [];
}
async fetch(request: Request): Promise<Response> {
const webSocketPair = new WebSocketPair();
const [client, server] = Object.values(webSocketPair);
server.accept();
this.sessions.push(server);
return new Response(null, {
status: 101,
webSocket: client,
});
}
}Expected Output
Durable Object class defined💡 Tips
- Durable Objects provide consistent, low-latency state management
- Each object instance handles its own WebSocket connections
Step 1 of 3