Overview
Rooms are conversation-scoped channels for message delivery. Users must join a room to receive messages for that conversation.Room Concept
- Each conversation has a corresponding room
- Users must explicitly join rooms to receive messages
- Leaving a room stops message delivery for that conversation
- Users can be in multiple rooms simultaneously
Joining a Room
Send ajoin message to join a conversation room:
Response
On success:Leaving a Room
Send aleave message to leave a room:
Response
Room Membership
Automatic Behavior
- Join: User is added to the room and receives all messages
- Leave: User is removed and stops receiving messages
- Disconnect: User is automatically removed from all rooms
Message Routing
When a message is sent to a conversation, it’s delivered to:- All users currently in that room
- Including the sender (echo)
Multiple Rooms
Users can join multiple rooms simultaneously:Room Events
Joining
Leaving
Sending to a Room
Once joined, send messages by specifying theconversation_id:
Room-Scoped Features
All real-time features are room-scoped:Typing Indicators
Read Receipts
Room State Management
The server maintains room state:- Which users are in which rooms
- When users join/leave
- Message routing based on membership
Redis-Based State
For multi-node deployments:- Room membership stored in Redis
- Messages broadcast via Redis Pub/Sub
- Consistent state across all nodes
Complete Example
Best Practices
Join Before Send
Always wait for
joined event before sending messages.Clean Up
Leave rooms when no longer needed to reduce memory usage.
Track Membership
Maintain local state of which rooms you’re in.
Handle Errors
Check for error responses on join/leave.
Next Steps
Message Types
All message types
Messaging
Real-time messaging
Typing
Typing indicators
SDK
SDK conversation management