You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R Shiny实现每5秒更新ping结果的响应式gauge仪表盘方案

实现方案

你现有代码的ping逻辑写在server函数顶层,仅会在Shiny应用启动时执行1次,所以gauge只会展示首次ping的结果。要实现定时更新,直接使用Shiny原生的reactiveTimer即可,不需要自己写循环逻辑避免阻塞响应线程。

修改后的完整server代码

#Server functions
#=======================================================================
server <- shinyServer(function(input, output, session) {
  # 定义5秒触发一次的定时器,参数单位为毫秒
  auto_refresh <- reactiveTimer(5000)
  
  # 定义响应式表达式,每次定时器触发时自动重新执行ping操作
  ping_results <- reactive({
    auto_refresh()
    # 此处可扩展多台服务器的ping逻辑,保留你原有示例不变
    list(
      careware = ping_port("google.com")[1],
      ksyos = 26 # 原有对照值,需要更新的话替换为对应服务器的ping逻辑即可
    )
  })

  output$out1 <- flexdashboard::renderGauge({
    current_ping <- ping_results()$careware
    gauge(current_ping, min = 0, max = 250, symbol = 'ms', label = "Verbinding Careware",gaugeSectors(
      success = c(250, 150), warning = c(150,50), danger = c(0, 50), colors = c("#CC6699")
    ))
  })

  output$out2 <- flexdashboard::renderGauge({
    current_ping <- ping_results()$ksyos
    gauge(current_ping, min = 0, max = 250, symbol = 'ms', label = "Verbinding Ksyos",gaugeSectors(
      success = c(100, 6), warning = c(5,1), danger = c(0, 1), colors = c("#CC6699")
    ))
  })
})

多服务器批量适配优化

如果后续需要新增更多服务器gauge,不需要重复写renderGauge代码,可通过批量生成简化逻辑:

  1. 先定义服务器映射列表:server_list <- c("google.com" = "Careware", "baidu.com" = "Ksyos", "yourserver.com" = "业务服务器")
  2. 用lapply批量生成输出:
lapply(seq_along(server_list), function(i){
  output[[paste0("out", i)]] <- flexdashboard::renderGauge({
    auto_refresh()
    current_ping <- ping_port(names(server_list)[i])[1]
    gauge(current_ping, min = 0, max = 250, symbol = 'ms', label = paste0("Verbinding ", server_list[i]),
      gaugeSectors(success = c(250, 150), warning = c(150,50), danger = c(0, 50), colors = c("#CC6699"))
    )
  })
})

注意事项

你原有代码中server函数结束的})后多了一个多余的},运行前请删除避免语法报错。

内容的提问来源于stack exchange,提问作者Raptor-ZH

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 09:00:03