【发布时间】:2017-12-09 11:44:33
【问题描述】:
我正在使用 shinydashboard 开发一个 Shiny 应用程序,我想在应用程序的某处显示一条通知,告诉用户有多少其他用户同时连接到该应用程序。
我想出了第一段似乎可以工作的代码:
library(shiny)
ui=fluidPage(uiOutput("text"))
number.users <- 0 # global variable
server= function(input, output, session){
already.counted = FALSE
autoInvalidate = reactiveTimer(2000)
observe({
if (!already.counted) {
already.counted <- TRUE
number.users <<- number.users + 1
}
})
output$text = renderUI({
autoInvalidate()
h1(paste0("There are ", number.users, " user(s) connected to this app"))
})
onSessionEnded(function(){number.users <<- number.users - 1})
}
但是它不是很“干净”,而且我担心我对observe 的调用以及每 2 秒的失效会为我的(已经很重的)应用程序增加一些无用的计算时间。我想知道shiny 中是否有某种函数会在每个新会话开始时触发一个事件,例如 onsessionstart() 我可以直接使用它来增加全局变量 @987654325 @,以及通知其他会话新会话已打开的方法?或者有没有更简单的方法?
谢谢
【问题讨论】:
标签: r session shiny global-variables