HTTP/2 Nativo — Núcleo (Core)

Archivo: src/native_h2_core.rs (1370 líneas)

¿Por qué existe?

Implementa el núcleo del soporte HTTP/2 nativo para Forja. A diferencia del cliente HTTP/1.1 (que usa la crate ureq), HTTP/2 usa la crate h2 directamente para multiplexación de streams sobre una sola conexión TCP, con soporte completo para server push, priorización de streams, y control de flujo.

Componentes principales

ComponenteDescripción
H2ConnectionMantiene el estado de una conexión HTTP/2 (tipo, destino, streams activos)
H2StreamRepresenta un stream individual dentro de una conexión HTTP/2 multiplexada
H2ClientCliente HTTP/2 que maneja conexiones, envía requests y recibe responses
H2ServerServidor HTTP/2 que acepta conexiones, enruta requests y envía responses

API Pública (registrada en NativeRegistry)

Función nativaDescripción
_h2_connect(host, puerto)Conecta a un servidor HTTP/2
_h2_request(conn_id, metodo, path, headers, cuerpo)Envía un request HTTP/2 y retorna el response
_h2_server_listen(host, puerto)Inicia un servidor HTTP/2
_h2_push_promise(conn_id, stream_id, path, headers)Server push: promete un recurso al cliente
_h2_close(conn_id)Cierra una conexión HTTP/2

Características

Integración con TLS

El módulo src/native_h2_tls.rs (178 líneas) extiende native_h2_core con soporte TLS, permitiendo conexiones HTTP/2 seguras (h2://). Usa native-tls para manejar certificados y handshake TLS.

⚡ Rendimiento: HTTP/2 nativo está diseñado para aplicaciones de alto rendimiento. La multiplexación elimina el overhead de múltiples conexiones TCP, y el control de flujo previene que un stream lento bloquee a otros.