从服务器向客户端发送数据

在许多情况下,你需要将数据从 R 服务器发送到 JS 客户端。这是一个非常简单的例子:

library(shiny)
runApp(
  list(
    ui = fluidPage(
      tags$script(
        "Shiny.addCustomMessageHandler('message', function(params) { alert(params); });"  
      ),
      actionButton("btn","Press Me")
    ),
    server = function(input, output, session) {
      observeEvent(input$btn,{
        randomNumber <- runif(1,0,100)
        session$sendCustomMessage("message",list(paste0(randomNumber," is a random number!")))
      })
    }
  )
)

这里的主要工具是 R 中的 session$sendCustomMessage 函数和 javascript 中的 Shiny.addCustomMessageHandler 函数。

session$sendCustomMessage 函数允许你将参数从 R 发送到 javascript 函数,Shiny.addCustomMessageHandler 让你定义接受 R 参数的 javascript 函数。

注意:列表从 R 传递到 javascript 时会转换为 JSON