Home

Realtime

Send and receive messages to connected clients.

Supra provides a globally distributed cluster of Realtime servers that enable the following functionality:

  • Broadcast: Send ephemeral messages from client to clients with low latency.
  • Presence: Track and synchronize shared state between clients.
  • Postgres Changes: Listen to Postgres database changes and send them to authorized clients.

Realtime API#

By default Realtime is disabled on your database. Let's turn on Realtime for a todos table.

  1. Go to the Database page in the Dashboard.
  2. Click on Replication in the sidebar.
  3. Control which database events are sent by toggling Insert, Update, and Delete.
  4. Control which tables broadcast changes by selecting Source and toggling each table.

From the client, we can listen to any new data that is inserted into the todos table:


_11
// Initialize the JS client
_11
import { createClient } from '@supra/supra-js'
_11
const supra = createClient(supra_URL, supra_ANON_KEY)
_11
_11
// Create a function to handle inserts
_11
const handleInserts = (payload) => {
_11
console.log('Change received!', payload)
_11
}
_11
_11
// Listen to inserts
_11
const { data: todos, error } = await supra.from('todos').on('INSERT', handleInserts).subscribe()

Use subscribe() to listen to database changes. The Realtime API works through PostgreSQL's replication functionality. Postgres sends database changes to a publication called supra_realtime, and by managing this publication you can control which data is broadcast.

Examples#

Resources#

Find the source code and documentation in the Supra GitHub repository.