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

Shiny Server超大数据自定义消息传输报错问题求助

解决Shiny发送超大JSON数据断开连接的问题

调整Shiny服务器消息大小限制

  • 修改Shiny服务器配置文件(通常路径为/etc/shiny-server/shiny-server.conf),添加或更新websocket-message-size-limit参数,根据实际数据量设置更大阈值:
    server {
      listen 3838;
      location / {
        site_dir /srv/shiny-server;
        log_dir /var/log/shiny-server;
        directory_index on;
        websocket-message-size-limit 100M; # 可按需调整数值
      }
    }
    
  • 修改完成后重启Shiny服务器:sudo systemctl restart shiny-server

分块发送数据

如果不想修改全局配置,或调整配置后仍有问题,可将大数据拆分为小块分批传输:

  • R端拆分数据并分块发送:
    chunk_size <- 1000 # 按数据结构设置合适的单块大小
    data_chunks <- split(data, ceiling(seq_along(data)/chunk_size))
    for (i in seq_along(data_chunks)) {
      session$sendCustomMessage("handler", list(
        chunk = data_chunks[[i]],
        chunk_id = i,
        total_chunks = length(data_chunks)
      ))
    }
    
  • 前端接收分块并合并后再可视化:
    let collectedChunks = [];
    let totalChunks = 0;
    Shiny.addCustomMessageHandler('handler', (data) => {
      collectedChunks.push(data.chunk);
      totalChunks = data.total_chunks;
      if (collectedChunks.length === totalChunks) {
        const fullData = [].concat(...collectedChunks); // 根据实际数据结构调整合并逻辑
        visualizer(fullData);
        // 重置临时存储
        collectedChunks = [];
        totalChunks = 0;
      }
    });
    

优化数据结构

  • 剔除JSON中可视化不需要的冗余字段,仅保留必要数据
  • 对数值型数据做紧凑处理,比如用编码替代重复值,或转换为二进制格式(需前后端配合解析)

检查EC2网络配置

  • 确认EC2实例的安全组、NACLs未限制大尺寸数据包传输,必要时调整MTU值避免数据包被截断

内容的提问来源于stack exchange,提问作者Mush-A

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 20:31:04