‫Instructor: En este video y
‫en el siguiente, nos sumergiremos en otra pieza
‫importante de la arquitectura Node JS con eventos
‫JS y arquitectura impulsada por eventos.
‫Entonces, la mayoría de los módulos centrales de
‫Node, como los que ya usamos, como HTTP, File System y Timers, están
‫construidos alrededor de una arquitectura dirigida por eventos y,
‫por supuesto, también podemos usar esta
‫arquitectura para nuestra ventaja en nuestro propio código.
‫Y el concepto es bastante simple.
‫Entonces, en Node, hay ciertos objetos llamados emisores
‫de eventos que emiten eventos con nombre tan
‫pronto como sucede algo importante en la aplicación, como una
‫solicitud que llega al servidor, un temporizador que expira o un
‫archivo que termina de leerse.
‫Estos eventos pueden ser recogidos por los oyentes de
‫eventos que configuramos los desarrolladores, que activarán las
‫funciones de devolución de llamada que están adjuntas a cada oyente, de acuerdo.
‫Entonces, nuevamente, por un lado, tenemos emisores de eventos
‫y, por otro lado, oyentes de eventos que reaccionarán a
‫los eventos emitidos llamando a la función de devolución de llamada.
‫Simple, ¿verdad?
‫Y probablemente la mejor manera de entender
‫esto es mirar un ejemplo.
‫Entonces, entendamos brevemente cómo Node usa la
‫arquitectura dirigida por eventos para manejar las solicitudes
‫del servidor en el módulo HTTP que ya usamos en otra sección.
‫Entonces, cuando queremos crear un servidor,
‫usamos el método Create
‫Server y lo guardamos en una variable de servidor.
‫Esta implementación aquí es un poco diferente
‫a la que hicimos antes, pero funciona exactamente de la misma manera.
‫De todos modos, este servidor. El método on es
‫cómo realmente creamos un oyente, y en este caso para el evento "request".
‫Entonces, digamos que tenemos nuestro servidor
‫en ejecución y se realiza una nueva solicitud.
‫El servidor actúa como un emisor y automáticamente emitirá
‫un evento llamado "solicitud" cada vez que una solicitud
‫llegue al servidor.
‫Simple, ¿verdad?
‫Luego, dado que ya tenemos un oyente
‫configurado para este evento exacto, se llamará automáticamente a la función
‫de devolución de llamada que adjuntamos a este oyente.
‫Y este tipo de función que
‫ya conocemos antes, simplemente enviará algunos datos al cliente.
‫Ahora, funciona de esta manera porque detrás de escena
‫el servidor es en realidad una instancia de la
‫clase Node JS EventEmitter, por lo que hereda
‫toda esta lógica de emisión y escucha de eventos de
‫esa clase EventEmitter, y no se preocupe, vamos
‫a usar todo bien en el siguiente video, para
‫que se familiarice con toda esta lógica.
‫Ahora, solo para terminar esta lección,
‫creo que es importante mencionar que esta lógica de EventEmitter
‫se llama Patrón Observador en la programación Javascript
‫en general, y es un patrón bastante popular con
‫muchos casos usados.
‫Entonces la idea es que coloco
‫allí un observador, en este caso el oyente de eventos,
‫que sigue esperando, sigue observando al sujeto que eventualmente
‫emitirá el evento que el oyente está esperando.
‫Y lo opuesto a este patrón son simplemente funciones que llaman
‫a otras funciones, que es algo a lo que
‫estamos más acostumbrados en realidad, ¿verdad?
‫Pero el patrón del observador ha
‫sido diseñado para reaccionar más que para llamar.
‫Y eso se debe a que hay un gran beneficio
‫de usar esta arquitectura, que es el hecho de
‫que todo está más desacoplado.
‫No tenemos, por ejemplo, funciones del módulo del
‫sistema de archivos que llaman a funciones del módulo HTTP
‫porque sería un gran lío.
‫En cambio, estos módulos están muy bien desacoplados y
‫son autónomos, cada uno de los cuales emite
‫eventos a los que otras funciones, incluso si provienen
‫de otros módulos, pueden responder.
‫Además, el uso de una arquitectura impulsada por eventos
‫hace que sea mucho más sencillo reaccionar varias veces
‫al mismo evento.
‫Todo lo que tenemos que hacer es configurar varios oyentes, ¿verdad?
‫Está bien, y esa es la arquitectura impulsada por eventos de Node
‫en pocas palabras.
‫Y no se preocupe si esto parece un poco demasiado
‫teórico, verá que esta lógica se usa en
‫muchas situaciones a lo largo del curso, comenzando en el siguiente video.