Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Introducción
YARP habilita el proxy webSocket y las conexiones SPDY de forma predeterminada. Esta compatibilidad funciona tanto con el reenvío directo como con los enfoques de canalización completa .
WebSockets es un protocolo de streaming bidireccional basado en HTTP/1.1 o posterior adaptado a HTTP/2.
SPDY es el precursor de HTTP/2 y se usa normalmente en entornos de Kubernetes.
Mejoras HTTP/1.1
WebSockets y SPDY se basan en HTTP/1.1 utilizando una función llamada actualización de conexión. YARP proxies la solicitud inicial y, si el servidor de destino responde con 101 Switching Protocols
, actualiza la conexión a un flujo opaco y bidireccional mediante el nuevo protocolo. YARP no admite la actualización a otros protocolos como HTTP/2 de esta manera.
HTTP/2
YARP admite WebSockets a través de HTTP/2 a partir de .NET 7 y YARP 2.0. Kestrel es el único servidor AspNetCore disponible que aceptará solicitudes HTTP/2 WebSocket entrantes y que la compatibilidad se habilitará automáticamente. Los exploradores pueden detectar esta compatibilidad anunciada por el servidor y cambiar automáticamente a HTTP/2.
Las versiones de protocolo entrante y saliente no necesitan coincidir. La solicitud webSocket entrante puede ser HTTP/1.1 o 2. No hay ninguna configuración específica de WebSockets para las solicitudes salientes. YARP utilizará la Versión y la PolíticaDeVersión (VersionPolicy) de ForwarderRequestConfigpara determinar la versión de salida que se va a utilizar. Estos valores predeterminados son HTTP/2 y RequestVersionOrLower.
WebSockets requiere diferentes encabezados HTTP para HTTP/2, por lo que YARP agregará y quitará estos encabezados según sea necesario al adaptarse entre las distintas versiones.
Después del handshake inicial, WebSockets funcionan de la misma manera en ambas versiones HTTP.
Interrupción
tiempos de espera de solicitud HTTP (.NET 8+) pueden aplicar tiempos de espera a todas las solicitudes de forma predeterminada o por directiva. Estos tiempos de espera se deshabilitarán después de un handshake de WebSocket. Todavía se aplicarán a las solicitudes gRPC. Para obtener más configuraciones, consulte Tiempos de espera.