Midwess
Guides

Use listen() to register a callback.

let token = db
    .listen("changes", |payload| {
        println!("payload: {payload}");
    })
    .await?;

db.exec("NOTIFY changes, 'ready'").await?;
db.unlisten_token("changes", token).await?;

Remove listeners

Method Purpose
unlisten_token(channel, token) Remove one callback returned by listen().
unlisten(channel) Remove all callbacks for a channel and send UNLISTEN.

Channel names are quoted when sent to Postgres and normalized to lowercase in the listener map.

Live queries

live_query() builds on LISTEN/NOTIFY. It creates a view for a SELECT, determines watched tables, installs triggers, and re-runs the query when a watched table changes.

let handle = db
    .live_query("SELECT id, name FROM users", &[], |rows| {
        println!("fresh rows: {}", rows.len());
    })
    .await?;

handle.refresh();
handle.unsubscribe().await?;