Skip to content

Commit

Permalink
Add xhttp mode downloadSettings and extra
Browse files Browse the repository at this point in the history
  • Loading branch information
yuhan6665 committed Nov 17, 2024
1 parent 0eacffc commit 8a908de
Showing 1 changed file with 79 additions and 2 deletions.
81 changes: 79 additions & 2 deletions docs/config/transports/splithttp.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

<Badge text="v1.8.16+" type="warning"/>

使用HTTP分块传输编码流式响应处理下载,使用多个HTTP POST请求进行上传
使用HTTP分块传输编码流式响应处理下载,使用多个 HTTP POST 请求(或者流式)进行上传

可以通过不支持WebSocket的CDN上,但仍有一些要求:

Expand All @@ -18,6 +18,7 @@ The `XHttpObject` 对应传输配置的 `xhttpSettings` 项。

```json
{
"mode": "auto",
"path": "/",
"host": "xray.com",
"headers": {
Expand All @@ -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 协议路径,默认值为 `"/"`
Expand Down Expand Up @@ -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 版本

Expand Down

0 comments on commit 8a908de

Please sign in to comment.