如何通过关闭浏览器来停止结束闪亮会话

How to stop end shiny session by closing the browser

我有一个闪亮的应用程序,每次我都想结束会话,我关闭浏览器。我四处研究,大多数开发人员建议在我的服务器上添加此代码段。

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

下面提供了一个最小的例子;

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()

这个例子的问题我一直在问自己我应该把我的其他线路放在服务器的什么地方?例如,如果我想绘制直方图,我该如何编写服务器?

是吗

    server = function(input, output, session) {
      session$onSessionEnded(function() {
       hist(data)
        stopApp()
      })
    }
  )

    server = function(input, output, session) {
     hist(data)
      session$onSessionEnded(function() {
        stopApp()
      })
    }
  )

 I am just seeking a more working example 

如果您想在会话处于活动状态时绘制直方图,请选择第二个选项。正如@Waldi 所提到的,第一个选项会在会话结束时绘制直方图,因此用户永远不会看到直方图。请在此处查看两个选项的示例:

第一个选项:我们从未见过 table

rm(list=ls())

library(shiny)

doshiny <- function() {
    app=shinyApp(
        ui = fluidPage(
            textInput("textfield", "Insert some text", value = "SomeText"),
            dataTableOutput('table')
        ),
        server = function(input, output, session) {

            session$onSessionEnded(function() {
                output$table <- renderDataTable(iris)
                stopApp()
            })
        }
    )
    runApp(app)
}

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

openshiny()

第二个选项:我们看到 table

rm(list=ls())

library(shiny)

doshiny <- function() {
    app=shinyApp(
        ui = fluidPage(
            textInput("textfield", "Insert some text", value = "SomeText"),
            dataTableOutput('table')
        ),
        server = function(input, output, session) {
            output$table <- renderDataTable(iris)
            session$onSessionEnded(function() {

                stopApp()
            })
        }
    )
    runApp(app)
}

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

openshiny()