在R Shiny应用程序中接收推送数据

时间:2016-08-17 10:41:40

标签: python r get shiny shiny-server

我有一个简单的python程序,它应该将其数据推送到R Shiny应用程序中。 Shiny中的这些行解析了" GET"输入:

  # Parse the GET query string
  output$queryText <- renderText({
    query <- parseQueryString(session$clientData$url_search)
    eventList[query$eventid] <<- query$event
  })

这适用于浏览器调用&#34; http://127.0.0.1:5923/?eventid=1223&event=somestring&#34;。如果我尝试在python中调用URL,我会得到一个&#34; Connection重置为#34;在R中没有任何内容添加到列表中。到目前为止我的Python代码:

request = urllib2.Request("http://127.0.0.1:5923/?eventid=1223&event=somestring")
test = urllib2.urlopen(request)

有谁知道如何使这项工作或有更好的解决方案将数据从外部推送到R Shiny应用程序?

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

我使用带有httpuv的网页框的完整解决方案:

library(httpuv)
startWSServer <- function(){
   if(exists('server')){
      stopDaemonizedServer(server)
   }
   app <- list(
      onWSOpen = function(ws) {
         ws$onMessage(function(binary, message) {
            #handle your message, for example save it somewhere 
            #accessible by Shiny application, here it is just printed
            print(message)
            ws$send("message received")
         })
      }
   )
   server <<- startDaemonizedServer("0.0.0.0", 9454, app)
}

stopWSServer <- function(){
   stopDaemonizedServer(server)
   server <<- NULL
}

希望这会有所帮助;)