我想构建一个 R Shiny 应用程序,能够将信息从一个正在运行的实例传递到其他可能正在运行的实例。到目前为止,我还没有发现任何可以帮助我解决这个问题的东西,我希望能够正确地做到这一点,而不是诉诸全局变量和/或写入文件等(我在下面的示例中使用了全局变量,我知道这是一个不好的做法;而且我怀疑写入文件也不是一个好的做法)。
例如,假设我的 App.R 在服务器上运行并且Tim, Jack and John打开它。怎么做Tim见下图,当Jack and John是否同时使用该应用程序并按以下示例所示的按钮?
App.R:
library(shiny)
# Somehow interactively visible variable? (I know global variables are bad, I wouldn't want to use such)
txt <<- ""
shinyApp(
ui = fluidPage(
textInput("name", "User name", value="USERNAME"),
actionButton("button", "Button"),
htmlOutput("text")
),
server = function(input, output, session){
a <- eventReactive(input$button, {
txt <<- paste(txt, "Button pressed by", input$name, "at", Sys.time(), "<br>")
txt
})
output$text <- reactive({
HTML(a())
})
}
)
各个用户按下多个按钮后所需的输出示例,这些用户都在其浏览器中运行了应用程序实例(所有用户都选择了唯一的 input$name,但显然唯一的会话 id 会更好):
任何见解将不胜感激,谢谢!