当用户导航时,如何让R Shiny继续运行?

时间:2014-05-24 23:44:34

标签: r shiny

即使用户离开页面,如何让R Shiny应用程序继续运行?

下面包括一个简化示例,每半秒记录一个数据点。只要网页被查看,该应用就会添加积分,当用户离开时会停止(差距),如果他们导航回来则会继续。有没有办法让它没有差距?

wave plot

示例代码:

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

1 个答案:

答案 0 :(得分:0)

查看reactiveTimer的文档。一般的行为是你想要一个绑定到用户会话的计时器,这样当用户离开你的应用程序时,不会继续代表他们永久地工作。

但是,如果您希望计时器在会话退出后继续运行,请向NULL中的session参数提供reactiveTimer