我成功创建了一个Shiny应用程序,它使用Shiny.addCustomMessageHandler()函数与javascript程序连接。然后javascript程序将JSON返回给Shiny。下一步是检查javascripts返回的JSON,并根据类型在R Shiny中执行特定操作。我有来自server.R的这个片段,它应该满足这个要求:
eventReactive(input$jsQLK,{
b <- fromJSON(input$jsQLK)
if(is.null(b) || is.na(b)){
print('0')
}
else if(b$result$Layout$Type == "A"){
print('yay')
}
else if(b$result$Layout$Type == "B"){
print('nay')
else
print('k')
})
与它一起运行的javascript,如下所示:
Shiny.addCustomMessageHandler("tx", Tx);
//Other code and creation of websocket
function Tx(msg){
ws.send((msg.req));
ws.onmessage = function (event) {
console.log(event.data);
Shiny.onInputChange('jsQLK',event.data);
}
}
运行此功能,不会打印任何内容。如果我使用observeEvent,我得到错误:&#34; if:error的长度为零&#34;和ERROR:[on_request_read]连接由peer重置
我如何成功实现这一目标?