2014-05-24 29 views
3

即使用戶離開頁面,我如何才能讓R Shiny應用繼續運行?如何讓R在用戶導航時保持運行?

下面包含一個簡化示例,每半秒記錄一個數據點。只要查看網頁,該應用就會添加點數,當用戶導航離開時(間隙)停止並在返回時繼續。有沒有辦法讓它運行沒有差距?

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

回答

0

結帳爲reactiveTimer的文檔。一般的行爲是你想要一個綁定到用戶會話的計時器,這樣當用戶離開你的應用程序時,不會繼續以他們的名義繼續工作。

但是,如果您希望計時器在會話退出後繼續運行,請提供NULLreactiveTimer中的session參數。

+0

這似乎並不奏效。我在上面的代碼中將'reactiveTimer(500,session)'改爲'reactiveTimer(500,session = NULL)',它沒有任何作用 - 當用戶離開時仍然存在差距。對你起作用嗎? –

相關問題