diff --git a/README.md b/README.md index ecb20de7..4be236d0 100644 --- a/README.md +++ b/README.md @@ -1285,6 +1285,24 @@ sudo apt-get install libta-lib0-dev - If API fails, system uses default mainstream coins (BTC, ETH, etc.) - ~~Check API URL and auth parameter in config.json~~ *Check configuration in web interface* +### 6. WebSocket can't connect when using an HTTP/HTTPS proxy + +**Solution**: +- Export standard proxy environment variables *before* starting the backend: + ```bash + export HTTPS_PROXY=http://: + export HTTP_PROXY=http://: + + # If your proxy requires credentials + export HTTPS_PROXY=http://user:pass@: + export HTTP_PROXY=http://user:pass@: + + # Start NOFX normally + ./start.sh + ``` +- **Docker Compose**: put the variables in `.env` or the service's `environment` block. +- NOFX relies on Go's `http.ProxyFromEnvironment`, so every outbound request—including the Binance combined streams WebSocket—follows these proxy settings automatically when the variables are present. + --- ## 📈 Performance Optimization Tips diff --git a/docs/i18n/zh-CN/README.md b/docs/i18n/zh-CN/README.md index cff89345..e992cb03 100644 --- a/docs/i18n/zh-CN/README.md +++ b/docs/i18n/zh-CN/README.md @@ -1302,6 +1302,24 @@ sudo apt-get install libta-lib0-dev - 如果API失败,系统会使用默认主流币种(BTC、ETH等) - ~~检查config.json中的API URL和auth参数~~ *检查Web界面中的配置* +### 6. 代理环境下 WebSocket 无法连接 + +**解决**: +- 启动后端前导出标准代理环境变量: + ```bash + export HTTPS_PROXY=http://<代理主机>:<端口> + export HTTP_PROXY=http://<代理主机>:<端口> + + # 如果代理需要账号密码 + export HTTPS_PROXY=http://用户名:密码@<代理主机>:<端口> + export HTTP_PROXY=http://用户名:密码@<代理主机>:<端口> + + # 正常启动 NOFX + ./start.sh + ``` +- **Docker Compose**:将变量写到 `.env` 或 `docker-compose.yml` 的 `environment` 中。 +- NOFX 使用 Go 的 `http.ProxyFromEnvironment`,只要环境变量设置正确,包括 Binance 合并流在内的所有出站请求都会自动走代理。 + --- ## 📈 性能优化建议 diff --git a/market/combined_streams.go b/market/combined_streams.go index 801d423e..2f5b0146 100644 --- a/market/combined_streams.go +++ b/market/combined_streams.go @@ -7,6 +7,7 @@ import ( "strings" "sync" "time" + "net/http" "github.com/gorilla/websocket" ) @@ -32,6 +33,7 @@ func NewCombinedStreamsClient(batchSize int) *CombinedStreamsClient { func (c *CombinedStreamsClient) Connect() error { dialer := websocket.Dialer{ HandshakeTimeout: 10 * time.Second, + Proxy : http.ProxyFromEnvironment, } // 组合流使用不同的端点