diff --git a/docs/config/transports/splithttp.md b/docs/config/transports/splithttp.md index 7b38fad22..d3d6fa85b 100644 --- a/docs/config/transports/splithttp.md +++ b/docs/config/transports/splithttp.md @@ -2,7 +2,7 @@ -使用HTTP分块传输编码流式响应处理下载,使用多个HTTP POST请求进行上传。 +使用HTTP分块传输编码流式响应处理下载,使用多个 HTTP POST 请求(或者流式)进行上传。 可以通过不支持WebSocket的CDN上,但仍有一些要求: @@ -18,6 +18,7 @@ The `XHttpObject` 对应传输配置的 `xhttpSettings` 项。 ```json { + "mode": "auto", "path": "/", "host": "xray.com", "headers": { @@ -33,10 +34,33 @@ The `XHttpObject` 对应传输配置的 `xhttpSettings` 项。 "maxConnections": 0, "cMaxReuseTimes": 0, "cMaxLifetimeMs": 0 - } + }, + "downloadSettings": { + "address": "example.com", + "port": 443, + "network": "xhttp", + "security": "none", + "tlsSettings": {}, + "realitySettings": {}, + "xhttpSettings": { + "path": "/" // must be the same + }, + "sockopt": { + "dialerProxy": "" // just for example + } + }, + "extra": {} } ``` +> `mode`: string + +XHTTP 上行所使用的模式。默认值为 `"auto"`,客户端与 REALITY 搭配时采用流式上行,否则采用分包上行。服务端同时兼容两种模式。 + +`"packet-up"`:两端使用分包上行。即将数据包包装为单个 HTTP POST 请求,在服务端重组。可以兼容任意 HTTP 中间盒。 + +`"stream-up"`:两端使用流式上行。开启一个 HTTP 长连接发送上行数据包,与现有的 H2 / H3 / gRPC 类似。速度快但兼容性低。 + > `path`: string XHTTP 所使用的 HTTP 协议路径,默认值为 `"/"`。 @@ -128,6 +152,59 @@ XHTTP 的HTTP请求中所发送的host,默认值为空。若服务端值为空 默认值为 0(即无限) 一个连接最多可以“存活”多久,当连接打开的时间超过该值后核心不会向该连接再分配流,其将在内部最后一条流关闭后断开。 +## downloadSettings + +用于拆分 XHTTP 下行所使用的连接(可选项,注意拆分的流量必须抵达服务端的同一个入站) + +`downloadSettings` 里面是嵌套的 [StreamSettingsObject](../transport.md#streamsettingsobject) ,可以使用 TLS 或者 REALITY 或者 `sockopt` 等各种选项。除此以外独有以下两个选项: + +> `address`: address + +下行服务端地址,支持域名、IPv4、IPv6。 + +> `port`: number + +下行服务端端口。 + +## extra + +```json +{ + "extra": { + "headers": { + "key": "value" + }, + "scMaxEachPostBytes": 1000000, + "scMaxConcurrentPosts": 100, + "scMinPostsIntervalMs": 30, + "noSSEHeader": false, + "xPaddingBytes": "100-1000", + "xmux": { + "maxConcurrency": 0, + "maxConnections": 0, + "cMaxReuseTimes": 0, + "cMaxLifetimeMs": 0 + }, + "downloadSettings": { + "address": "example.com", + "port": 443, + "network": "xhttp", + "security": "none", + "tlsSettings": {}, + "realitySettings": {}, + "xhttpSettings": { + "path": "/" // must be the same + } + } + } +} +``` + +`extra` 是嵌套的 `XHttpObject`,用来实现分享原始 Json。`extra` 里面的配置会覆盖外面的配置。 + +目前以下选项在 `extra` 里面**不生效**: + +`host` `path` `mode` `downloadSettings->sockopt` `extra` ## HTTP 版本