【发布时间】:2020-06-24 06:23:38
【问题描述】:
我将在win10中作为服务器运行rshiny app
在win10环境下运行Rshiny,并使用下例所示代码运行服务器,
我想接收和存储客户端连接到分配的主机ip的信息。
如果我想获取另一个win10客户端的用户名或客户端的Computername怎么办?
如下代码所示的 Sys.getenv() 函数只返回服务器的用户名...
shinydashboard_test.R
library(shiny)
library(shinydashboard)
ui <- dashboardPage(
dashboardHeader(title="Test"),
dashboardSidebar(
sidebarMenu(
menuItem("Dashboard", tabName = "dashboard", icon = icon("dashboard")),
menuItem("Widgets", tabName = "widgets", icon = icon("th"))
)
),
dashboardBody(
tabItems(
tabItem(tabName="dashboard",
fluidRow(
box(plotOutput("plot1",height=250)),
box(
title="Contorls",
sliderInput("slider","Number of ovservations",1,100,50)
)
)
),
tabItem(tabName="widgets",
h2("Widgets tab Content")
)
)
)
)
server <- function(input,output,session){
set.seed(122)
histdata <- rnorm(500)
ip <- session$request$REMOTE_ADDR
cat("ip:",ip,"time : ",as.character(Sys.time()),"user :", as.character(Sys.getenv("USERNAME")),"\n")
output$plot1 <- renderPlot({
data <- histdata[seq_len(input$slider)]
hist(data)
})
}
shinyApp(ui,server)
runShiny.R
require(shiny)
folder_address="C:/shinydashboard_test.R"
x <- system("ipconfig",intern=TRUE)
z <- x[grep("IPv4",x)]
ip <- gsub(".*?([[:digit:]])","\\1",z)
print(paste0("the Shiny Web application runs on: http://",ip,":8080/"))
runApp(folder_address,launch.browser = TRUE,port=8080,host=ip)
【问题讨论】:
-
(1)
Sys.getenv只会告诉您有关本地用户/计算机的信息,而不是远程。 (2)你的previous question(和我的回答)没有给你你需要的东西吗? (即:session$username) -
session$username 在我的环境中只返回 NULL.. 还有其他方法吗??
-
您是否将其部署到服务器?
-
session$username 仅适用于专业版服务器,不适用于开源版本
-
No.. 它只适用于我公司的内部网络。
标签: r shiny shinydashboard shinyapps