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

Fargate部署R Shiny应用通过ALB DNS访问WebSocket连接失败求助

问题解决思路

核心原因

Shiny依赖WebSocket维持实时交互,通过ALB访问时,Shiny自动生成的WebSocket地址(如ws://my-app-address:44977/websocket/)要么和ALB实际监听端口不匹配,要么ALB未开启WebSocket支持,最终导致连接失败、界面变灰。

具体解决方案

1. 开启ALB的WebSocket支持

  • 确保ALB目标组使用HTTP或HTTPS协议(WebSocket依赖HTTP/HTTPS握手建立连接)
  • 检查ALB安全组,开放对应访问端口:如果ALB用80/443端口,需放行这两个端口;如果用自定义端口44977,要确保安全组允许外部访问该端口
  • 确认目标组健康检查配置正常,ALB能正确转发流量到Fargate任务

2. 强制Shiny生成正确的WebSocket地址

通过配置让Shiny知晓ALB的外部访问地址,避免自动生成错误的WebSocket路径:

  • 环境变量方式(推荐):在Fargate任务定义中添加环境变量
SHINY_SERVER_URL=https://你的ALB-DNS名称

如果ALB用自定义端口:

SHINY_SERVER_URL=https://你的ALB-DNS名称:443
  • 代码方式:在app.R或ui.R开头添加配置
options(shiny.host = "0.0.0.0")
options(shiny.port = 3838) # 对应Fargate任务暴露的Shiny端口
options(shiny.server.url = "https://你的ALB-DNS名称")

3. 检查ALB端口转发规则

如果ALB监听80/443端口,却转发到Fargate任务的非默认端口,或未正确保留请求头信息,会导致Shiny识别错误端口:

  • 在ALB目标组属性中开启转发客户端IP和端口
  • 核对端口映射:确保ALB监听端口和转发到Fargate任务的端口对应正确(比如ALB 80端口转发到任务3838端口)

4. 移除无效的定时代码

你之前添加的定时代码未实际发送有效WebSocket消息,属于无效配置,直接删除即可。Shiny会自动维护WebSocket连接,无需手动定时触发。


内容的提问来源于stack exchange,提问作者hrii00

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 11:37:15