Add xhttp mode downloadSettings and extra

pull/607/head
yuhan6665 7 days ago
parent 0eacffc92a
commit 8a908de60b

@ -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 版本

Loading…
Cancel
Save