Create a streaming reactive for real-time payload updates
Usage
payload_stream(
path = "/ingress",
session,
filter_func = NULL,
transform_func = NULL,
intervalMillis = 100,
max_items = 50
)
Arguments
- path
The URL path used in payload_ui() or payload_methods() (default "/ingress")
- session
The Shiny session object
- filter_func
Optional function to filter payloads. Should return TRUE to include payload
- transform_func
Optional function to transform payloads before returning
- intervalMillis
Polling interval in milliseconds (default 100 for real-time)
- max_items
Maximum number of items to keep in stream (default 50)
Examples
if (interactive()) {
server <- function(input, output, session) {
# Stream all payloads
all_stream <- payload_stream("/api/data", session)
# Stream only error events
error_stream <- payload_stream("/api/data", session,
filter_func = function(payload) {
!is.null(payload$payload$level) && payload$payload$level == "error"
}
)
# Stream with transformation
temp_stream <- payload_stream("/api/sensors", session,
filter_func = function(payload) {
!is.null(payload$payload$type) && payload$payload$type == "temperature"
},
transform_func = function(payload) {
list(
timestamp = payload$meta$timestamp,
temp_celsius = payload$payload$value,
temp_fahrenheit = payload$payload$value * 9/5 + 32
)
}
)
}
}