YARP Docsv2.3
Документация/Протоколы/WebSockets и SPDY

WebSockets и SPDY

YARP по умолчанию поддерживает проксирование соединений WebSocket и SPDY. Эта поддержка работает

Проксирование WebSockets и SPDY в YARP

Введение

YARP по умолчанию поддерживает проксирование соединений WebSocket и SPDY. Эта поддержка работает как при прямой пересылке, так и при использовании полного конвейера.

WebSockets — это двунаправленный потоковый протокол, построенный на основе HTTP/1.1 или более поздних версий, адаптированных для HTTP/2 .

SPDY — предшественник HTTP/2, часто используемый в средах Kubernetes.

Обновления HTTP/1.1

WebSockets и SPDY построены поверх HTTP/1.1 с использованием механизма обновления соединения (connection upgrades) . YARP проксирует исходный запрос, и если сервер назначения отвечает статусом 101 Switching Protocols , обновляет соединение до непрозрачного двунаправленного потока, использующего новый протокол. Таким способом YARP не поддерживает обновление до других протоколов, например HTTP/2.

HTTP/2

YARP поддерживает WebSockets поверх HTTP/2 начиная с .NET 7 и YARP 2.0. Kestrel — единственный доступный сервер AspNetCore, который принимает входящие запросы WebSocket по HTTP/2, и эта поддержка включена автоматически. Браузеры могут обнаруживать заявленную сервером поддержку и автоматически переключаться на HTTP/2.

Версии входящего и исходящего протоколов не обязаны совпадать. Входящий запрос WebSocket может быть HTTP/1.1 или 2. Для исходящих запросов отдельной настройки WebSockets не требуется — YARP использует свойства Version и VersionPolicy из ForwarderRequestConfig, чтобы определить исходящую версию. По умолчанию это HTTP/2 и RequestVersionOrLower.

Для HTTP/2 WebSockets требуют других HTTP-заголовков, поэтому YARP по мере необходимости добавляет и удаляет эти заголовки при адаптации между версиями.

После первоначального рукопожатия WebSockets работают одинаково в обеих версиях HTTP.

Тайм-аут

Тайм-ауты HTTP-запросов (Http Request Timeouts, .NET 8+) можно применять ко всем запросам по умолчанию или по определённой политике.

Эти тайм-ауты отключаются после установления соединения WebSocket. Они по-прежнему применяются к запросам

gRPC. Дополнительные сведения о настройке см. в разделе Тайм-ауты.

Примечание

Автор подготовил эту статью с помощью ИИ. Подробнее

Адаптировано из Microsoft Learn , лицензия CC BY 4.0 .