Phoenix PubSub adapter for SpacetimeDB.
Broadcasts SpacetimeDB table changes to Phoenix.PubSub topics, making it easy to build real-time Phoenix applications backed by SpacetimeDB.
Topics
"spacetimedb:{table_name}"— insert/delete events for a table"spacetimedb:reducers"— reducer result events
Messages
{:spacetimedb, :insert, table_name, row}{:spacetimedb, :delete, table_name, row}{:spacetimedb, :reducer_result, request_id, result}
Usage
# In your supervision tree:
children = [
{Phoenix.PubSub, name: MyApp.PubSub},
{Spacetimedbex.Phoenix,
pubsub: MyApp.PubSub,
host: "localhost:3000",
database: "my_db",
subscriptions: ["SELECT * FROM users"]}
]
# In a LiveView:
def mount(_params, _session, socket) do
Phoenix.PubSub.subscribe(MyApp.PubSub, "spacetimedb:users")
{:ok, socket}
end
def handle_info({:spacetimedb, :insert, "users", row}, socket) do
{:noreply, stream_insert(socket, :users, row)}
end
Summary
Functions
Find a row by primary key.
Get all rows from a cached table.
Start the Phoenix adapter.
Options
:pubsub— Phoenix.PubSub module name (required):host— SpacetimeDB host (required):database— database name (required):subscriptions— list of SQL subscription queries:token— optional JWT token:compression— optional compression setting:name— optional process name (defaults toSpacetimedbex.Phoenix)