即使用户离开页面,如何让R Shiny应用程序继续运行?
下面包括一个简化示例,每半秒记录一个数据点。只要网页被查看,该应用就会添加积分,当用户离开时会停止(差距),如果他们导航回来则会继续。有没有办法让它没有差距?
示例代码:
library(shiny)
starttime<-as.POSIXct(Sys.time())
timeconst=5
time<-as.numeric(difftime( as.POSIXct(Sys.time()),starttime, units="secs"))
mydata<-data.frame(time=Sys.time(), sin( time / timeconst ))
runApp(list(
ui = pageWithSidebar(headerPanel("Sine wave"),NULL,
mainPanel(plotOutput("sinePlot"))),
server =function(input, output, session) {
autoInvalidate <- reactiveTimer(500, session)
output$sinePlot <- renderPlot({
autoInvalidate()
time<-as.numeric(difftime( as.POSIXct(Sys.time()) , starttime, units="secs") )
mydata<<-rbind(mydata,data.frame(time=Sys.time(), sin( time / timeconst )) )
plot(mydata)
})}))
答案 0 :(得分:0)
查看reactiveTimer的文档。一般的行为是你想要一个绑定到用户会话的计时器,这样当用户离开你的应用程序时,不会继续代表他们永久地工作。
但是,如果您希望计时器在会话退出后继续运行,请向NULL
中的session
参数提供reactiveTimer
。