R: Reactive polling

reactivePoll {shiny} | R Documentation

## Reactive polling

### Description

Used to create a reactive data source, which works by periodically polling a non-reactive data source.

### Usage

    reactivePoll(intervalMillis, session, checkFunc, valueFunc)

### Arguments

`intervalMillis` | Approximate number of milliseconds to wait between calls to `checkFunc`. This can be either a numeric value, or a function that returns a numeric value.
`session` | The user session to associate this file reader with, or `NULL` if none. If non-null, the reader will automatically stop when the session ends.
`checkFunc` | A relatively cheap function whose values over time will be tested for equality; inequality indicates that the underlying value has changed and needs to be invalidated and re-read using `valueFunc`. See Details.
`valueFunc` | A function that calculates the underlying value. See Details.

### Details

`reactivePoll` works by pairing a relatively cheap "check" function with a more expensive value retrieval function. The check function will be executed periodically and should always return a consistent value until the data changes. When the check function returns a different value, then the value retrieval function will be used to re-populate the data.

Note that the check function doesn't return `TRUE` or `FALSE` to indicate whether the underlying data has changed. Rather, the check function indicates change by returning a different value from the previous time it was called.

For example, `reactivePoll` is used to implement `reactiveFileReader` by pairing a check function that simply returns the last modified timestamp of a file, and a value retrieval function that actually reads the contents of the file.

As another example, one might read a relational database table reactively by using a check function that does `SELECT MAX(timestamp) FROM table` and a value retrieval function that does `SELECT * FROM table`.

The `intervalMillis`, `checkFunc`, and `valueFunc` functions will be executed in a reactive context; therefore, they may read reactive values and reactive expressions.

### Value

A reactive expression that returns the result of `valueFunc`, and invalidates when `checkFunc` changes.

### See Also

`reactiveFileReader`

### Examples

    function(input, output, session) {

      data <- reactivePoll(1000, session,
        # This function returns the time that log_file was last modified
        checkFunc = function() {
          if (file.exists(log_file))
            file.info(log_file)$mtime[1]
          else
            ""
        },
        # This function returns the content of log_file
        valueFunc = function() {
          read.csv(log_file)
        }
      )

      output$dataTable <- renderTable({
        data()
      })
    }

[Package shiny version 1.0.3 Index]