限制本地托管的R闪亮应用程序中的用户数量

时间:2015-06-15 15:39:52

标签: r shiny

我想在任何时候将本地托管的r闪亮应用的用户数量限制为一个用户。

理想情况下,当第二个用户尝试同时运行应用程序时(用户通过在地址字段中键入本地IP来访问应用程序),应用程序将显示默认消息并停止任何进一步的进度。如果输入时显示的唯一内容是此拒绝消息,则对任何其他用户命令进行无效可能无关紧要。

应用内容无关紧要,因此我们可以将此应用作为示例:http://shiny.rstudio.com/gallery/tabsets.html

感谢您提供任何帮助或信息。

1 个答案:

答案 0 :(得分:0)

我不建议这样做,我认为这非常危险,但有一些方法你可以一起破解这个。这是一个解决方案(正如我所说的,它是hacky,我自己也不会这样做)。基本思想是拥有一个全局变量来跟踪某人是否正在使用该应用程序。如果没有人使用该应用程序,请显示该应用程序并打开该标志,并确保在用户退出时关闭该标志。

shinyBusy <- FALSE

runApp(shinyApp(
  ui = fluidPage(
    shinyjs::useShinyjs(),
    shinyjs::hidden(
      h1(id = "busyMsg", "App is busy")
    ),
    shinyjs::hidden(
      div(
        id = "app",
        p("Hello!")
      )
    )
  ),
  server = function(input, output, session) {
    if (shinyBusy) {
      shinyjs::show("busyMsg")
    } else {
      shinyBusy <<- TRUE
      session$onSessionEnded(function() shinyBusy <<- FALSE)
      shinyjs::show("app")
    }
  }
),
launch.browser = TRUE)

注意:为了显示/隐藏应用元素,我使用了我编写的包shinyjs