59 lines
2.1 KiB
Markdown
Raw Normal View History

2021-03-16 23:57:15 +08:00
# WebSocket
2021-03-15 23:59:11 +08:00
使用标准的 WebSocket 来传输数据。
WebSocket 连接可以被其它 HTTP 服务器(如 Nginx分流也可以被 VLESS fallbacks path 分流。
::: tip
Websocket 会识别 HTTP 请求的 X-Forwarded-For 头来覆写流量的源地址,优先级高于 PROXY protocol。
2021-03-16 23:57:15 +08:00
:::
2021-03-15 23:59:11 +08:00
## WebSocketObject
`WebSocketObject` 对应传输配置的 `wsSettings` 项。
```json
{
2021-03-26 14:01:07 +08:00
"acceptProxyProtocol": false,
"path": "/",
"host": "xray.com",
2021-03-26 14:01:07 +08:00
"headers": {
"key": "value"
2021-03-26 14:01:07 +08:00
}
2021-03-15 23:59:11 +08:00
}
```
2021-03-26 14:01:07 +08:00
> `acceptProxyProtocol`: true | false
2021-03-15 23:59:11 +08:00
仅用于 inbound指示是否接收 PROXY protocol。
2021-03-16 23:57:15 +08:00
2021-03-15 23:59:11 +08:00
[PROXY protocol](https://www.haproxy.org/download/2.2/doc/proxy-protocol.txt) 专用于传递请求的真实来源 IP 和端口,**若你不了解它,请先忽略该项**。
2021-03-16 23:57:15 +08:00
2021-03-15 23:59:11 +08:00
常见的反代软件(如 HAProxy、Nginx都可以配置发送它VLESS fallbacks xver 也可以发送它。
填写 `true` 时,最底层 TCP 连接建立后,请求方必须先发送 PROXY protocol v1 或 v2否则连接会被关闭。
> `path`: string
2021-03-15 23:59:11 +08:00
WebSocket 所使用的 HTTP 协议路径,默认值为 `"/"`
如果客户端路径中包含 `ed` 参数(如 ```/mypath?ed=2560```),将会启用 `Early Data` 以降低延迟,在升级的同时使用 `Sec-WebSocket-Protocol` 头承载首包数据,其值为首包长度阈值。如果首包长度超过此值,就不会启用 `Early Data`。推荐值为 2560最大值为8192过大的值可能导致部分兼容问题如果遇到兼容性问题可以尝试调低阈值。
2021-03-16 23:57:15 +08:00
> `host`: string
WebSocket 的HTTP请求中所发送的host默认值为空。若服务端值为空时不验证客户端发送来的host值。
当在服务端指定该值,或在 ```headers``` 中指定host将会校验与客户端请求host是否一致。
客户端选择发送的host优先级 ```host``` > ```headers``` > ```address```
2021-03-26 14:01:07 +08:00
> `headers`: map \{string: string\}
2021-03-15 23:59:11 +08:00
自定义 HTTP 头,一个键值对,每个键表示一个 HTTP 头的名称,对应的值是字符串。
默认值为空。
2021-03-31 16:29:31 +08:00
2021-07-05 18:54:11 +08:00
## Browser Dialer
2021-03-31 16:29:31 +08:00
2021-07-05 18:54:11 +08:00
使用浏览器处理 TLS详见 [Browser Dialer](../features/browser_dialer.md)