Skip to content
Prev 44328 / 63421 Next

concurrent requests (Rook, but I think the question is more general)

On 24/10/12 10:55 PM, Simon Urbanek wrote:
Thanks for the tips. This is what I'm currently contemplating:

1. Main interface starts in user's R session, and opens up the interface 
(HTML/Javascript using Rook package)
2. When analysis starts, Rserve is started, with its own web server, 
using Rook, for status updates
3. During analysis, main process calls a callback function which uses 
RSassign() to send progress updates to the Rserve server
4. HTML/Javascript interface can connect to the webserver on the Rserve 
server to get status updates
5. When analysis is done, use RSshutdown() and RSclose() to clean up.

Does this seem reasonable?

One problem I'm having is that when I start Rook on the Rserve server, 
the webserver does not respond (although it is started). Does Rserve 
only respond to requests on the port assigned for RSclient commands?

Best,
Richard

Here's an example:

#######################

library(Rserve)

### This works:

stuff = expression({
   library(Rook)
   s <- Rhttpd$new()
   s$add(
     app=system.file('exampleApps/helloworld.R',package='Rook'),
     name='hello'
   )
   s$start(quiet=TRUE)
   s$browse(1)
   print(s$full_url(1))
})

# This will open the browser to the test app, asking for your name
eval(stuff)

### This does not:

Rserve(args="--no-save")
c <- RSconnect()
RSassign(c, stuff)

# This opens the browser to the correct URL, but the webserver doesn't 
respond.
RSeval(c, quote(eval(stuff)))


#####
# cleanup
RSshutdown(c)
RSclose(c)