Push events to connected clients in under 50ms

Push live updates to your users, since Broadcast delivers each event that your server publishes to every client that subscribes to its channel. Broadcast also tracks which users are connected, so your interface can show who is online.

Live features on channels that Conjoin hosts

Clients connect to Broadcast through the Conjoin SDK and subscribe to named channels. Broadcast then pushes each event that your server or a client publishes to every subscriber on the channel, over WebSocket servers that Conjoin operates.

How Broadcast connects clients to channels

Channel subscriptions

A client subscribes to a channel by its ID, such as an inbox channel for one account. Broadcast delivers each event on that channel to all of its subscribers at once.

Presence tracking

Broadcast keeps a list of the members connected to each channel and sends a presence update to the channel when a member joins or leaves. Your interface can show online indicators, typing status, and the members of a room from that list.

Bidirectional messaging

Clients can publish to a channel as well as subscribe to it. Your server can receive a message from a client and answer on the same channel, while Broadcast delivers the message to every other subscriber for chat or shared cursors.

Low-latency delivery

Broadcast delivers events worldwide in less than 50 milliseconds from publish to receipt, with a p99 latency under 100 milliseconds.

Channel authorization

Broadcast authenticates every client connection, then checks the permissions that you set on a channel before the client can subscribe to it or publish to it.

Game state sync

Give each game room a channel for player moves, state changes, and room events. With Broadcast delivery times below 50ms, a turn-based or casual multiplayer game can show each move on every player's device as the player makes it.

Event history

Fetch the earlier events on a channel through the API, so a client that joins late can display the messages from before it joins.

Automatic reconnection

The SDK reconnects a client automatically when its connection drops. Broadcast then replays every event that the client misses while it is offline, so the client receives every message on the channel.

< 50ms
Message latency

End-to-end, p99 under 100ms

1M+
Concurrent connections

Per application

Full replay
After a reconnect

Events from the time that a client spends disconnected

Build faster with solutions designed for real-world needs

Push an inbox notification to the right account

Subscribe each signed-in client to a channel for its own account, then publish to that channel from your backend when it stores a new message. Broadcast pushes the event to every session that the account has open, where your client code renders it.

Impact

In the sample, the notify route publishes a message.received event to the recipient's inbox channel, which the InboxToaster component subscribes to with useChannel. The component lists each message with its sender and preview in an aria-live region, so a screen reader can announce it as well.

Prompt for a coding agent: Show a toast when a new message reaches the inbox, and let screen readers announce it.

Conjoin IDE

Select a file to view its contents

Share cursors and saved edits across a document

Give each document its own channel and subscribe every editor who opens it. Clients publish cursor positions and selections to the channel directly, while your server publishes each content change once it saves the change. Broadcast delivers both kinds of event to the other editors with a latency under 50ms.

Impact

In the sample, the saveBlock server function writes the block to your database before it publishes a block.saved event, so the other editors receive only changes that are already stored. The DocumentCanvas component publishes a cursor.moved event as the caret moves and draws a labeled cursor from each one that it receives.

Prompt for a coding agent: Show each editor's cursor live, and broadcast each block after it saves.

Conjoin IDE

Select a file to view its contents

Show who is in a trip-planning room

The useChannel hook returns the members who are online in a channel and refreshes that list whenever someone joins or leaves. When you resolve presence through Conjoin Auth, Broadcast returns each member with the name from their account.

Impact

In the sample, the Lampwick Outdoors trip page shows a count of the guides and guests in the room and lists each one by name. Broadcast updates the members array for you, so you will have no table of open connections to maintain.

Prompt for a coding agent: Show who is in the trip-planning room, with a count and each person's name.

Conjoin IDE

Select a file to view its contents

Stream fleet metrics to every open dashboard

Publish each metrics update from your backend to a channel for the dashboard that shows it. Broadcast delivers the update to every open copy of that dashboard at once, so each copy can redraw from the newest event.

Impact

In the sample, the publishFleetTick server function publishes a fleet.tick event to the Northcove Power channel for one region. The FleetGrid component keeps the last 30 events and shows the active units, the p95 latency, and the operator on call from the newest one.

Prompt for a coding agent: Stream fleet metrics to every open dashboard, and keep the last 30 updates on screen.

Conjoin IDE

Select a file to view its contents

Send each move to every player in a game room

Subscribe each player to a channel for their game room. Players publish their moves to that channel, while your server publishes room events such as the start of each round. The other players receive each move within 50ms, a small fraction of a 30-second turn.

Impact

In the sample, each player's screen publishes a join move once its connection opens and a player.move event on each button press. The startRound function publishes a round.start event with a 30-second turn budget to every device in the room.

Prompt for a coding agent: Send each player's move to everyone in the room, and start each round with a 30-second turn.

Conjoin IDE

Select a file to view its contents

Build your next app on Conjoin

Conjoin will open with a free Build tier, while the pricing page already lists the launch prices for Pro and Business. If you tell us what you're building, we'll talk you through early access.