Run code after an application or session ends — onStop
R/shiny.R
Description
This function registers callback functions that are invoked when the
application exits (when runApp()
exits), or after each user
session ends (when a client disconnects).
Arguments
- fun
A function that will be called after the app has finished running.
- session
A scope for when the callback will run. If
onStop
is called from within the server function, this will default to the current session, and the callback will be invoked when the current session ends. IfonStop
is called outside a server function, then the callback will be invoked with the application exits. IfNULL
, it is the same as callingonStop
outside of the server function, and the callback will be invoked when the application exits.
Value
A function which, if invoked, will cancel the callback.
See also
onSessionEnded()
for the same functionality, but at
the session level only.
Examples
## Only run this example in interactive R sessions
if (interactive()) {
# Open this application in multiple browsers, then close the browsers.
shinyApp(
ui = basicPage("onStop demo"),
server = function(input, output, session) {
onStop(function() cat("Session stopped\n"))
},
onStart = function() {
cat("Doing application setup\n")
onStop(function() {
cat("Doing application cleanup\n")
})
}
)
}
# In the example above, onStop() is called inside of onStart(). This is
# the pattern that should be used when creating a shinyApp() object from
# a function, or at the console. If instead you are writing an app.R which
# will be invoked with runApp(), you can do it that way, or put the onStop()
# before the shinyApp() call, as shown below.
if (FALSE) {
# ==== app.R ====
cat("Doing application setup\n")
onStop(function() {
cat("Doing application cleanup\n")
})
shinyApp(
ui = basicPage("onStop demo"),
server = function(input, output, session) {
onStop(function() cat("Session stopped\n"))
}
)
# ==== end app.R ====
# Similarly, if you have a global.R, you can call onStop() from there.
# ==== global.R ====
cat("Doing application setup\n")
onStop(function() {
cat("Doing application cleanup\n")
})
# ==== end global.R ====
}