|
|
|
|
# WebSocket
|
|
|
|
|
|
|
|
|
|
Использует стандартный WebSocket для передачи данных.
|
|
|
|
|
|
|
|
|
|
Подключение WebSocket может быть проксировано другими HTTP-серверами (например, Nginx) и VLESS fallbacks path.
|
|
|
|
|
|
|
|
|
|
::: tip
|
|
|
|
|
WebSocket распознает заголовок X-Forwarded-For в HTTP-запросе для перезаписи исходного адреса трафика, приоритет выше, чем у PROXY protocol.
|
|
|
|
|
:::
|
|
|
|
|
|
|
|
|
|
## WebSocketObject
|
|
|
|
|
|
|
|
|
|
`WebSocketObject` соответствует элементу `wsSettings` в конфигурации транспорта.
|
|
|
|
|
|
|
|
|
|
```json
|
|
|
|
|
{
|
|
|
|
|
"acceptProxyProtocol": false,
|
|
|
|
|
"path": "/",
|
|
|
|
|
"host": "xray.com",
|
|
|
|
|
"headers": {
|
|
|
|
|
"key": "value"
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
> `acceptProxyProtocol`: true | false
|
|
|
|
|
|
|
|
|
|
Только для входящих подключений, указывает, следует ли принимать PROXY protocol.
|
|
|
|
|
|
|
|
|
|
[PROXY protocol](https://www.haproxy.org/download/2.2/doc/proxy-protocol.txt) используется для передачи реального исходного IP-адреса и порта запроса, **если вы не знаете, что это такое, проигнорируйте этот параметр**.
|
|
|
|
|
|
|
|
|
|
Распространенные программы-обработчики обратного прокси (например, HAProxy, Nginx) можно настроить на его отправку, VLESS fallbacks xver также может его отправлять.
|
|
|
|
|
|
|
|
|
|
Если установлено значение `true`, то после установления TCP-соединения на самом нижнем уровне запрашивающая сторона должна сначала отправить PROXY protocol v1 или v2, иначе соединение будет закрыто.
|
|
|
|
|
|
|
|
|
|
> `path`: string
|
|
|
|
|
|
|
|
|
|
Путь, используемый WebSocket в HTTP-протоколе, значение по умолчанию — `"/"`.
|
|
|
|
|
|
|
|
|
|
Если в пути клиента есть параметр `ed` (например, ```/mypath?ed=2560```), будет активирован `Early Data` для уменьшения задержки.
|
|
|
|
|
|
|
|
|
|
> `host`: string
|
|
|
|
|
|
|
|
|
|
Хост, отправляемый в HTTP-запросе WebSocket, значение по умолчанию — пустое. Если значение на стороне сервера пустое, значение хоста, отправленное клиентом, не проверяется.
|
|
|
|
|
|
|
|
|
|
Если это значение указано на стороне сервера или `host` указан в `headers`, то проверяется соответствие хоста запроса клиента.
|
|
|
|
|
|
|
|
|
|
Приоритет выбора хоста для отправки клиентом: `host` > `headers` > `address`.
|
|
|
|
|
|
|
|
|
|
> `headers`: map \{string: string\}
|
|
|
|
|
|
|
|
|
|
Пользовательские HTTP-заголовки, пары ключ-значение, где каждый ключ представляет имя HTTP-заголовка, а соответствующее значение является строкой.
|
|
|
|
|
|
|
|
|
|
Значение по умолчанию: пустое.
|
|
|
|
|
|
|
|
|
|
## Browser Dialer
|
|
|
|
|
|
|
|
|
|
Использует браузер для обработки TLS, подробнее см. в [Browser Dialer](../features/browser_dialer.md).
|