‫Instructor: Las transmisiones son otro concepto fundamental en
‫Node. JS.
‫Así que ahora aprendamos todo sobre ellos.
‫Entonces, en primer lugar, ¿qué son las transmisiones?
‫Bueno, con los flujos podemos procesar datos de lectura y escritura de
‫significado pieza por pieza sin completar toda la operación
‫de lectura o escritura.
‫Por lo tanto, no tenemos que mantener todos los datos en
‫la memoria para realizar estas operaciones.
‫Por ejemplo, cuando leemos un archivo usando secuencias,
‫leemos parte de los datos, hacemos algo con ellos,
‫luego liberamos nuestra memoria y repetimos esto hasta que se haya procesado
‫todo el archivo.
‫O piense en YouTube o Netflix, que
‫se denominan empresas de transmisión
‫por secuencias porque transmiten videos utilizando el mismo principio.
‫Entonces, en lugar de esperar hasta que se cargue todo el archivo
‫de video, el procesamiento se realiza pieza por pieza o en
‫trozos para que pueda comenzar a mirar incluso antes de que se haya
‫descargado todo el archivo.
‫Entonces, el principal aquí no se trata solo de Node. JS.
‫Pero universal para la informática en general.
‫Entonces, como puede ver, esto hace que las transmisiones sean el
‫candidato perfecto para entregar grandes volúmenes de datos como,
‫por ejemplo, videos o también datos que estamos recibiendo pieza por
‫pieza de una fuente externa.
‫Además, la transmisión hace que el procesamiento de datos sea más
‫eficiente en términos de memoria porque no hay
‫necesidad de mantener todos los datos en la memoria y también en términos
‫de tiempo porque podemos comenzar a procesar los datos a medida
‫que llegan, en lugar de esperar a que llegue todo.
‫Bien, ahora que sabemos qué son las transmisiones,
‫hablemos un poco sobre cómo se implementan en
‫Node. JS.
‫Entonces, en Node, hay cuatro tipos fundamentales de transmisiones:
‫transmisiones legibles, transmisiones grabables, transmisiones dúplex y
‫transmisiones de transformación.
‫Pero los que se pueden leer y
‫escribir son los más importantes.
‫Y entonces nos centraremos más en estos dos.
‫Entonces, las secuencias legibles son aquellas de las que podemos leer.
‫Podemos consumir datos, ¿tiene sentido verdad?
‫Ahora las transmisiones están en todas partes en los módulos centrales de Node.
‫Así que un poco como eventos, como hablamos antes.
‫Por ejemplo, los datos que ingresan cuando un servidor http
‫recibe una solicitud son en realidad un flujo legible.
‫Así que todos los datos que se envían con la solicitud
‫vienen pieza por pieza y no en una pieza grande.
‫También otro ejemplo del sistema de archivos es
‫que podemos leer un archivo pieza
‫por pieza usando una pantalla de lectura del módulo FS,
‫que en realidad puede ser bastante útil para archivos de texto grandes.
‫Muy bien, ahora otra cosa importante a tener
‫en cuenta es que las transmisiones son en
‫realidad instancias de la clase EventEmitter.
‫Lo que significa que todas las transmisiones pueden emitir y escuchar
‫eventos con nombre.
‫Como aprendimos en la última conferencia.
‫En el caso de transmisiones legibles, pueden emitir
‫y podemos escuchar muchos eventos diferentes.
‫Pero los dos más importantes son los datos y los eventos finales.
‫El evento de datos se emite cuando hay un
‫nuevo dato para
‫consumir, y el evento final se emite tan pronto
‫como no hay más datos para consumir.
‫Y, por supuesto, podemos reaccionar
‫a estos eventos en consecuencia.
‫Y de hecho vamos a hacer exactamente eso en el próximo video.
‫Entonces, para practicar cómo trabajar con transmisiones.
‫Finalmente, además de los eventos, también tenemos funciones importantes que
‫podemos usar en las transmisiones.
‫Y en el caso de los
‫flujos legibles, los más importantes son la tubería y las funciones de lectura.
‫Y nuevamente, los verá en acción en el
‫siguiente video, especialmente la función súper importante
‫de tubería, que básicamente nos permite conectar transmisiones juntas,
‫pasando datos de una transmisión a
‫otra sin tener que preocuparnos mucho por los eventos.
‫Bien, a continuación, los flujos grabables son aquellos
‫en los que podemos escribir datos.
‫Básicamente, lo opuesto a las transmisiones legibles.
‫Un gran ejemplo es la respuesta http que podemos enviar al cliente
‫y que en realidad es un flujo de escritura.
‫Entonces, una secuencia en la que podemos escribir datos.
‫Entonces, cuando queremos enviar datos, tenemos que escribirlos en algún
‫lugar, ¿verdad?
‫Y que en algún lugar hay una secuencia que se puede
‫escribir, y eso tiene mucho sentido, ¿verdad?
‫Por ejemplo, si quisiéramos enviar un archivo de video
‫grande a un cliente, transmitiríamos
‫ese resultado como lo hacen Netflix o YouTube.
‫Ahora sobre los eventos, los más importantes son los
‫eventos de drenaje y final.
‫Y las funciones más importantes son
‫las funciones de escritura y finalización, algunas
‫de las cuales verá en acción en la próxima lección.
‫Ahora rápidamente sobre las transmisiones dúplex.
‫Son simplemente transmisiones que se pueden leer y escribir
‫al mismo tiempo.
‫Estos son un poco menos comunes.
‫Pero de todos modos, un buen ejemplo sería un conector
‫web del módulo net.
‫Y un zócalo web es básicamente un canal de
‫comunicación entre el cliente y el servidor que funciona en ambas direcciones
‫y permanece abierto una vez que se ha establecido la conexión.
‫Finalmente, las transmisiones de transformación son transmisiones dúplex, por
‫lo que las transmisiones son tanto legibles como grabables, que
‫al mismo tiempo pueden modificar o transformar
‫los datos a medida que se leen o escriben.
‫Un buen ejemplo de esto es el módulo
‫central zlib para comprimir datos que en realidad usa un flujo de transformación.
‫Muy bien, y esos son los cuatro tipos de
‫transmisiones y una descripción general amplia de cómo podemos usarlos.
‫Ahora hay algo importante que
‫mencionar aquí antes
‫de continuar, que es un hecho que estos
‫eventos y funciones que les mostré son para
‫consumir streams que ya están implementados como los
‫que les mostré aquí como nuestros ejemplos.
‫Entonces, por ejemplo, Node implementó estas solicitudes y respuestas
‫http como flujos,
‫y luego podemos consumirlos, podemos usarlos usando
‫los eventos y funciones que están disponibles
‫para cada tipo de flujo.
‫Por supuesto, también podríamos implementar nuestros propios
‫flujos y luego consumirlos usando estos mismos eventos y funciones.
‫Sin embargo, eso sería un video para otro momento
‫porque para crear la
‫mayoría de las aplicaciones, es más importante saber cómo
‫consumir las transmisiones, no cómo implementarlas.
‫Muy bien, sigamos ahora y usemos
‫las transmisiones en la práctica.