How to stop running shiny app by closing the browser window?

Eka picture Eka · Feb 10, 2016 · Viewed 12.1k times · Source

I have deployed an app in shinyapps.io and its working fine.

I am running the app for only 5 minutes, but when I checked the metrics it shows a running time for about 0.7 hours. I found that there is a default idle time of 15 minutes, which I have changed to 5 minutes (minimum). I also noticed that, even after closing the browser window of the shiny app, it still shows the app as running in my dashboard.

I assume that the app doesn't stop running when a browser window is closed and it will stop only when the idle time condition is met.

Is there a way to stop the shiny app when the browser window is closed? Would the following piece of code work in this instance?

session$onSessionEnded(function() {
    stopApp()
  })

Answer

DoubleYou picture DoubleYou · Aug 9, 2017

I'm not aware of shinyapps.io, but in R (as your tag shows) you can indeed stop a shinyApp through the onSessionEnded. The following is a minimal working example.

rm(list=ls())

library(shiny)

doshiny <- function() {
  app=shinyApp(
    ui = fluidPage(
      textInput("textfield", "Insert some text", value = "SomeText")
    ),
    server = function(input, output, session) {
      session$onSessionEnded(function() {
        stopApp()
      })
    }
  )
  runApp(app)
}

openshiny <- function() {
  doshiny()
  print("Finished.")
}

openshiny()