Methods providing WebSocket connection server and request/response message
handling for the epiviz JS application http://epiviz.github.io. These functions have been extracted from the epivizr
Bioconductor package into its own package for easier use and maintenance.
It is based on the httpuv package, which provides an interface to the libuv networking library.
library(EpivizrServer)
# create the server (but it's not started yet)
server <- createServer(port=7123, verbose=FALSE)
# register a callback to evaluate when a request with given action
# is received
server$register_action("getData", function(request_data) {list(x=1,y=3)})
# start the server
server$start_server()
# send a request with callback to evaluate when successful response is received
server$send_request(list(x=2,y=5), function(response_data) {cat(response_data$x)})
# in Windows platform this is required to listen and respond to requests
server$service()
# when done, stop the server
server$stop_server()
# in interactive sessions it is good practice
# to add a `stop_server` call to the R exit hooks
# to release network port used
server$start_server()
on.exit(server$stop_server())