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 a join message to join a conversation room:

Response

On success:
On error:

Leaving a Room

Send a leave 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:
  1. All users currently in that room
  2. 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 the conversation_id:

Room-Scoped Features

All real-time features are room-scoped:

Typing Indicators

Only users in the room receive 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