Instantly share code, notes, and snippets.

Embed
What would you like to do?
client/server interaction with shiny - part 2
library(shiny)
shinyServer( function(input, output, session) {
output$results <- renderPrint({
input$mydata
})
# observer if value of the data sent from the client changes
# if yes generate a new random color and send it back to
# the client callback handler
observe({
input$mydata
color <- rgb(runif(1),runif(1),runif(1))
session$sendCustomMessage(type='myCallbackHandler', color)
})
})
library(shiny)
shinyUI( bootstrapPage(
# a div named mydiv
tags$div(id="mydiv",
style="width: 50px; height :50px; left: 100px; top: 100px;
background-color: gray; position: absolute"),
# an element for unformatted text
verbatimTextOutput("results"),
# javascript code to send data to shiny server
tags$script('
document.getElementById("mydiv").onclick = function() {
var number = Math.random();
Shiny.onInputChange("mydata", number);
};
'),
# handler to receive data from server
tags$script('
Shiny.addCustomMessageHandler("myCallbackHandler",
function(color) {
document.getElementById("mydiv").style.backgroundColor = color;
}
);
')
))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment