Wait for and return any notifications that return within timeout
Once you subscribe to notifications with LISTEN, use this to wait for responses on each channel.
postgresWaitForNotify(conn, timeout = 1)
conn |
a PqConnection object, produced by
|
timeout |
How long to wait, in seconds. Default 1 |
If a notification was available, a list of:
Name of channel
PID of notifying server process
Content of notification
If no notifications are available, return NULL
# For running the examples on systems without PostgreSQL connection: if (postgresHasDefault()) { library(DBI) library(callr) # listen for messages on the grapevine db_listen <- dbConnect(RPostgres::Postgres()) dbExecute(db_listen, "LISTEN grapevine") # Start another process, which sends a message after a delay rp <- r_bg(function () { library(DBI) Sys.sleep(0.3) db_notify <- dbConnect(RPostgres::Postgres()) dbExecute(db_notify, "NOTIFY grapevine, 'psst'") dbDisconnect(db_notify) }) # Sleep until we get the message n <- NULL while (is.null(n)) { n <- RPostgres::postgresWaitForNotify(db_listen, 60) } stopifnot(n$payload == 'psst') # Tidy up rp$wait() dbDisconnect(db_listen) }
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.