Happ VPN

WebSocket-транспорт: что это

Автор
Екатерина Лебедева, редактор раздела knowledge base
Проверил:
Артём Волков
Проверено:
Опубликовано:
, обновлено
Версия гайда:
1.0

Коротко

WebSocket-транспорт передаёт трафик VLESS, VMess или Trojan через одно постоянное соединение, которое начинается как обычный HTTP-запрос с заголовком Upgrade. В Happ он включается параметром type=ws и настраивается значениями path и host в ссылке сервера.

WebSocket — стандартная веб-технология: соединение открывается как HTTP-запрос, затем «переключается» в двусторонний канал, который остаётся открытым весь сеанс. Xray-core использует его как транспорт для VLESS, VMess и Trojan — эти протоколы Happ поддерживает поверх WebSocket. Ключевые параметры — path, адрес на сервере, и host, заголовок Host в запросе; оба должны совпадать с настройкой сервера или обратного прокси перед ним. WebSocket проходит почти через любой веб-сервер и CDN без специальной настройки, в отличие от транспортов, завязанных на HTTP/2.

WebSocket — транспорт Xray-core, при котором соединение открывается как обычный HTTP-запрос с заголовком Upgrade, а затем превращается в постоянный двусторонний канал для передачи данных VLESS, VMess или Trojan. Это широко распространённая веб-технология, а не собственная разработка Xray-core.

Суть транспорта

WebSocket — протокол, который придумали для веб-страниц, а не для Xray-core. Он позволяет браузеру и серверу обмениваться сообщениями в обе стороны через одно постоянно открытое соединение, вместо того чтобы каждый раз заново открывать HTTP-запрос.

Соединение начинается как обычный HTTP-запрос со специальным заголовком Upgrade. Сервер отвечает, что готов «переключиться», и с этого момента то же соединение используется для передачи данных в обе стороны без повторных заголовков HTTP на каждое сообщение.

Xray-core использует этот же механизм как один из транспортов: вместо сообщений веб-страницы внутри WebSocket-соединения идёт трафик VLESS, VMess или Trojan. Со стороны сервера и любого прокси на пути это выглядит как обычное WebSocket-соединение — таким его и обрабатывают.

Параметры

У транспорта два основных параметра, которые задаёт администратор сервера, а пользователь Happ переносит их в ссылку без изменений:

ПараметрЗа что отвечает
pathАдрес на сервере, по которому принимается WebSocket-соединение; по умолчанию /
hostЗначение заголовка Host — обычно домен сервера или CDN перед ним

Кроме них, документация Xray описывает необязательные настройки: собственные HTTP-заголовки клиента и период отправки служебных «пингов» для поддержания соединения — они нужны реже и обычно не входят в обычную ссылку сервера.

Особенность самого механизма Upgrade в том, что он относится к HTTP/1.1: даже если TLS на сервере способен вести более новый HTTP/2, WebSocket-соединение всё равно откроется поверх HTTP/1.1. Это не мешает работе, но отличает WebSocket от транспортов, которые изначально построены на HTTP/2 или HTTP/3.

Как это выглядит в Happ

Документация Happ перечисляет WebSocket как транспорт для трёх протоколов: VLESS, VMess и Trojan. Ссылка сервера с этим транспортом выглядит так:

Ссылка
vless://00000000-0000-0000-0000-000000000000@example.com:443?type=ws&path=%2Fws&host=example.com&security=tls&sni=example.com#Example

Happ передаёт type=ws, path и host в Xray-core без изменений. Если сервер стоит за CDN, host обычно совпадает с публичным доменом, а реальный сервер прячется за ним — с точки зрения пользователя Happ ничего не меняется, все параметры уже записаны в ссылке или подписке.

При несовпадении path или host с настройкой сервера соединение обрывается сразу после установки. В интерфейсе это может выглядеть как «Тайм-аут» при проверке пинга или как разрыв сразу после подключения — стоит сверить оба параметра посимвольно с данными, которые выдал администратор сервера.

Чем WebSocket отличается от похожих транспортов

WebSocket, gRPC и XHTTP решают одну и ту же задачу — передать трафик через инфраструктуру, рассчитанную на веб-протоколы, — но выбирают для этого разные механизмы.

ТранспортЧто используетСовместимость с CDN и прокси
WebSocketОбщепринятый механизм Upgrade поверх HTTP/1.1Максимальная: понимает практически любой веб-сервер
gRPCСобственные потоки внутри HTTP/2Только там, где весь путь трафика поддерживает HTTP/2
XHTTPHTTP/1.1, HTTP/2 или HTTP/3 в зависимости от режимаШирокая, с гибким выбором версии протокола

Главное преимущество WebSocket — предсказуемость: это давно устоявшийся стандарт, который одинаково понимают браузеры, серверы, CDN и обратные прокси. Плата за эту универсальность — отсутствие гибкости, которая есть у более новых транспортов Xray-core. Выбор между ними обычно делает администратор сервера, а от пользователя Happ требуется только точно перенести параметры из выданной ссылки.

Главное

  • WebSocket начинается как HTTP-запрос с заголовком Upgrade, а затем работает как постоянный двусторонний канал на весь сеанс.
  • В Happ транспорт задаётся параметром type=ws, а путь и домен на сервере — параметрами path и host в ссылке.
  • Документация Happ указывает WebSocket среди транспортов VLESS, VMess и Trojan — он поддержан у всех трёх протоколов.
  • WebSocket — общепринятая веб-технология, поэтому его пропускает практически любой сервер, обратный прокси и CDN без особой настройки.
  • Соединение WebSocket по протоколу ограничено HTTP/1.1, даже если TLS на сервере умеет более новый HTTP/2 — это особенность самого механизма Upgrade.

Частые вопросы

Что указывать в параметрах path и host для WebSocket?

path — адрес на сервере, по которому принимается WebSocket-соединение, например /ws; его выбирает администратор сервера. host — значение заголовка Host, обычно совпадает с доменом сервера или CDN перед ним. Оба параметра должны точно совпадать с настройкой сервера, иначе соединение обрывается сразу после установки, а Happ показывает ошибку или тайм-аут при проверке.

Почему WebSocket выбирают, если сервер стоит за CDN?

CDN и обратные прокси десятилетиями обслуживают обычный веб-трафик, включая WebSocket, поэтому такие соединения проходят через них без специальной настройки на стороне CDN. Транспортам на HTTP/2, например gRPC, для этого требуется, чтобы весь путь трафика поддерживал именно HTTP/2, а это не всегда так у CDN и корпоративных прокси.

Поддерживает ли Happ WebSocket для всех протоколов?

Документация Happ перечисляет WebSocket у VLESS, VMess и Trojan. Для Shadowsocks и SOCKS5 такой транспорт не описан — они работают напрямую поверх TCP и UDP. Hysteria2 использует собственный протокол на основе QUIC и тоже работает без WebSocket.

Нужен ли для WebSocket отдельный сертификат TLS?

Сам WebSocket не требует TLS — это выбор слоя защиты, а не транспорта. Часто WebSocket используют вместе с обычным TLS-сертификатом на домене, потому что такая связка хорошо проходит через CDN. Без TLS соединение WebSocket остаётся незашифрованным, и защиту в этом случае должен обеспечить сам протокол, как это делает VMess.

Чем отличается WebSocket от XHTTP на практике?

WebSocket держит одно постоянное соединение, открытое сразу после рукопожатия Upgrade, и работает только поверх HTTP/1.1. XHTTP может вести себя иначе в зависимости от режима: от отдельных запросов до постоянного потока, и умеет работать поверх HTTP/2 и HTTP/3. На практике для пользователя разница видна только в параметрах ссылки — path и host у WebSocket против path, host и mode у XHTTP.

Что произойдёт, если домен в host не совпадает с сертификатом сервера?

Проверка сертификата относится к TLS, а не к WebSocket, но при несовпадении домена соединение всё равно не установится: сервер или CDN перед ним ждут определённый заголовок Host и определённое имя в SNI. Сверьте оба значения с тем, что выдал администратор сервера, — они не обязаны совпадать друг с другом, но каждое должно быть точным.

Упомянутые темы

Разделы по теме

Источники

  1. Документация Xray: транспорт WebSocket — обращение 28 сентября 2026
  2. Документация Happ: примеры ссылок и параметры — обращение 28 сентября 2026