Además, es mantenido por el equipo de Node Core, el equipo de HTTP, y de hecho, la mayoría de nosotros pensamos que HTTP.request es casi irreparable y por eso es en lo que estamos trabajando en su lugar. Al principio, comenzó con soporte solo para HTTP 1.1, luego también agregamos recientemente soporte para HTTP 2.0, y ahora es... Sabes, el nombre Undici podría no ser la mejor referencia ya. De todos modos, así que... También tenemos HTTP 1.1. También tiene soporte para HTTP 1.1 pipelining. Entonces... También... Algo que es un poco... Hay algunas cosas que son diferentes en él, por lo que podrías experimentar algunos errores con los que podrías necesitar lidiar, esencialmente. Entonces, ¿por qué? Bueno, el problema es que los módulos HTTP, HTTP son un desastre, ¿de acuerdo? Principalmente porque usan la misma estructura de API para ambos, el cliente y el servidor de HTTP 1.0, y ambos están vinculados con la gestión de conexiones con la API pública. Entonces, ¿cómo puedes verlo? Bueno, tienes un request.socket, ¿de acuerdo? El hecho de que tengas una propiedad request.socket te dirá que hay este tipo de conexión, porque si tu sistema ya no está en socket, como en HTTP 2.0, ¿cómo implementarías eso? Y esta es la razón por la que no puedes soportar tanto HTTP 1.1 como HTTP 2.0 en la misma API.
Finalmente, por último pero no menos importante, no podemos cambiar esas clases sin romper express. Así que, sí, bueno, esa es la situación. Entonces, creamos undici.request para ser lo más rápido posible, porque hacer una solicitud HTTP no debería ser el cuello de botella de tu aplicación. También proporciona una buena DX, una muy buena DX, desde mi punto de vista. Es altamente configurable, utiliza Node.js stream, soporta HTTP 1.1 pipeline. Es genial. Solo usa esto. Este es probablemente el código que querrás estar usando, ¿de acuerdo? Undici Fetch está construido para cumplir con las especificaciones, ¿de acuerdo? Así que no está poniendo el rendimiento como la máxima prioridad. Es el cumplimiento de las especificaciones lo que es. Y ahora mismo, el 88% de las pruebas WPT que estamos ejecutando para Fetch, las estamos pasando. Así que, creo que es una compatibilidad bastante buena en general. Sin embargo, internamente, utiliza WhatWGstream, por lo que puedes usar Pipe2, WhatWGstream, todas las cosas, el Redible stream, como el navegador. Así que, todo el código que usa Undici Fetch y Fetch Node podría ser isomórfico. Nuevamente, el manejo del protocolo y la API están completamente separados, por lo que todas las cosas de las que vamos a hablar, Undici y la gestión de conexiones y demás, se aplican a ambos. Y esta es la razón por la que Undici Fetch fue construido sobre Undici. El Fetching Node fue construido sobre Undici. También soporta HTTP2, HTTP pipelining, debido a esta separación.
Bien, hablemos sobre el rendimiento, porque esto es lo crítico para ello, ¿de acuerdo? Entonces, sabes, los números son realmente significativos aquí, ¿de acuerdo? Como, Undici es prácticamente sin restricciones, ¿de acuerdo? Puedes usar, en este sistema de pruebas, puedes realmente usar Undici, una de las APIs de nivel más bajo, que es Undici.Dispatch, pero para ser honesto, esto no es lo que deberías estar usando, ¿de acuerdo? Es la parte subyacente, o Undici.Stream, que es, sabes, incluso más rápido, pero nuevamente, probablemente demasiado bajo nivel.
Comments