|
|
|
@ -2,7 +2,7 @@
|
|
|
|
|
|
|
|
|
|
<Badge text="v1.8.16+" type="warning"/>
|
|
|
|
|
|
|
|
|
|
使用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 版本
|
|
|
|
|
|
|
|
|
|