‫Este video es otro realmente emocionante, porque
‫ahora vamos a crear nuestro
‫primer servidor web real capaz de aceptar solicitudes
‫y enviar respuestas.
‫Y el primer paso es incluir otro paquete u otro
‫módulo, y
‫este se llama http.
‫Entonces estamos usando la función
‫require nuevamente, y luego requerimos el módulo http incorporado, y
‫ese es el que nos brinda capacidades de
‫red, como construir un servidor http.
‫Ahora, comentemos este código aquí para
‫que no se interponga en nuestro camino.
‫Así que vamos a crear una especie de divisor aquí.
‫Así que este
‫está archivado y este es para el servidor.
‫Y ahora, para construir nuestro servidor, tenemos
‫que hacer dos cosas.
‫Primero, creamos un servidor,
‫y luego, en segundo lugar, iniciamos el
‫servidor para que podamos escuchar las solicitudes entrantes.
‫Usamos nuestro módulo http y, al igual que antes, usamos un
‫método que está en ese objeto.
‫Así como hicimos con el módulo fs.
‫Entonces, http. createServer y
‫create server aceptarán una función de devolución de llamada,
‫que se activará cada vez que
‫una nueva solicitud llegue a nuestro servidor.
‫Y esta función de devolución de
‫llamada tiene acceso a dos variables fundamentales y muy importantes.
‫Es la variable de solicitud y una variable de respuesta.
‫Y un poco más sobre ellos en un segundo.
‫Entonces, solicitud y
‫respuesta, así que todo lo
‫que queremos hacer ahora es enviar una respuesta
‫al cliente y lo hacemos con res. que es este objeto aquí, este objeto de respuesta,. end, y luego '¡Hola
‫desde el servidor! '. end, y luego '¡Hola desde el servidor! '.
‫Así que esa es la respuesta que le enviaremos.
‫Entonces, nuevamente, cada vez
‫que una nueva solicitud llegue a nuestro servidor, se llamará a esta función de devolución de llamada,
‫y la función de devolución de llamada tendrá acceso al objeto de solicitud
‫que contiene todo tipo de cosas como la URL de la
‫solicitud y un montón de otras cosas.
‫Por otro lado, este objeto de respuesta
‫aquí nos da muchas herramientas básicamente para lidiar con
‫la respuesta, es decir, para
‫enviar la respuesta.
‫El más simple es. end, y este final aquí, el
‫nombre de este método tendrá un poco más de sentido
‫un poco más tarde.
‫Por ahora, solo sepa que esta es la forma más sencilla de enviar
‫una respuesta muy, muy simple en este caso.
‫Así que eso es todo lo que tenemos
‫que hacer para enviar una respuesta de texto sin formato cuando
‫llega una determinada solicitud.
‫Ahora, si está un poco confundido acerca de todos
‫estos términos, como la solicitud
‫entrante o el envío de respuestas, o incluso sobre por
‫qué realmente tenemos solicitudes y respuestas aquí en nuestro servidor, no
‫se preocupe, porque tenemos una conferencia completa en camino.
‫sobre cómo funciona la web, donde vamos a hablar
‫sobre el modelo cliente-servidor, y realmente cómo
‫funcionan las aplicaciones de red en general.
‫Nuevamente, en esta sección mi enfoque principal es
‫realmente mostrarles todas las cosas y hacer que realmente
‫funcionen, y luego la teoría seguirá
‫un poco más adelante.
‫Esa es la filosofía que
‫he usado en todos mis otros cursos
‫y ha funcionado
‫muy bien, así que creo que es bueno hacerlo aquí también.
‫De todos modos, crear un
‫servidor fue la primera parte, y
‫ahora la segunda parte es escuchar las solicitudes entrantes del cliente.
‫Ahora, para hacer eso, necesitamos guardar el
‫resultado de este createServer aquí en una nueva variable.
‫Entonces, lo llamamos generalmente servidor, por lo que servidor
‫es el resultado de este método createServer aquí.
‫Entonces creará un servidor,
‫y ahora usamos ese servidor y en él podemos llamar a listen.
‫Listen acepta un par de parámetros, el primero es
‫el puerto, y generalmente el puerto
‫que usamos en Note es, por ejemplo, 8000.
‫Pero verá otros números
‫como 3000 u 80, o algo así.
‫Y en caso de que se esté preguntando
‫qué es realmente un puerto, bueno, en realidad no importa, pero todo
‫lo que necesita saber es que es básicamente una subdirección
‫en un determinado host, y
‫el host es lo que especificamos a continuación.
‫En realidad, no necesitamos especificarlo y luego lo
‫usaremos por defecto en un host local,
‫pero en realidad podemos
‫especificarlo también en el host local explícitamente.
‫Por lo tanto, el host local generalmente tiene esta dirección como predeterminada,
‫y el host local simplemente significa la computadora actual.
‫Entonces, la computadora en la que se está ejecutando el programa.
‫Y nuevamente, esta es
‫la dirección IP estándar para ese host local.
‫Entonces, este de aquí comenzará a escuchar las solicitudes entrantes.
‫Básicamente, iniciando el servidor.
‫Y como argumento opcional también podemos pasar una función
‫de devolución de llamada,
‫que se ejecutará tan pronto
‫como el servidor comience a escuchar.
‫Entonces, aquí, es bastante habitual mostrar simplemente un mensaje de
‫que el servidor se ha iniciado.
‫Digamos que escucha las solicitudes en el puerto 8000.
‫Y ahora todo lo que tenemos que hacer
‫es ir a esta URL en nuestra computadora en el puerto 8000.
‫Ahora, antes de que podamos hacer
‫eso, por supuesto, tenemos que ejecutar la aplicación Note, así
‫que note index. js, y aquí tenemos nuestro candado.
‫Entonces escuchando la solicitud en el puerto 8000.
‫Y ves que la
‫aplicación sigue ejecutándose, por lo que antes siempre
‫se detenía de inmediato, hacía su trabajo
‫y luego salía de la aplicación.
‫Ahora mismo no hace eso.
‫Eso se debe a algo llamado
‫bucle de eventos del que hablaremos un
‫poco más adelante en otra sección de este curso.
‫Pero, sin importar cuáles sean las razones
‫técnicas para esto, es obvio que la aplicación realmente
‫no puede cerrarse de inmediato, porque entonces no podríamos recibir ninguna solicitud nueva.
‫Entonces, cuando iniciamos un servidor, Note no puede simplemente
‫salir del proceso, así que salir del programa, porque
‫todo el objetivo
‫es esperar a que entren las solicitudes.
‫Así que esto es lo que les mostraré a continuación.
‫Por ahora, abramos la dirección IP en el puerto 8000.
‫Y para eso usamos los dos puntos y luego el número de puerto.
‫Entonces, este es el host, que es el host local,
‫dos puntos y luego el número de puerto.
‫Presiona enter, y aquí vamos.
‫¡Hola desde el servidor!
‫Y sí, realmente funciona.
‫Tiene un servidor web real ejecutándose en su
‫computadora usando NoteJS, felicitaciones.
‫Así que volvamos aquí y analicemos nuevamente lo que sucedió aquí.
‫Creamos nuestro servidor, usando createServer y pasamos una
‫función de devolución de llamada que se ejecuta cada vez que
‫una nueva solicitud llega al servidor, y luego
‫comenzamos a escuchar las
‫solicitudes entrantes en la IP del host
‫local y luego en el puerto 8000.
‫Una vez que tuvimos todo esto en ejecución, hicimos la
‫solicitud presionando esa URL.
‫Entonces, básicamente, golpeando el host local en el puerto 8000.
‫Entonces, bajo el
‫capó de NoteJS se disparó un evento que
‫es algo de lo que, nuevamente, hablaremos un poco más adelante.
‫Pero lo que importa aquí es que este evento
‫hizo que se llamara a esta función de devolución de llamada.
‫Y finalmente, como
‫resultado de eso, recuperamos esta cadena.
‫Solo por curiosidad, echemos un vistazo
‫al objeto de solicitud.
‫Necesitamos cerrar el servidor e iniciarlo de
‫nuevo porque hicimos algunos cambios en el código.
‫Y observe cómo esta vez usé el control C para
‫salir de la aplicación.
‫Así que recuerda que al principio, cuando usamos
‫el ripple, usé el control
‫D para salir.
‫Pero ahora, cuando
‫tenemos un programa Note ejecutándose así, necesitamos usar
‫el control C para básicamente romper con ese programa.
‫Es por eso que aquí usé el control C y
‫durante el resto
‫del curso cuando quiera terminar un programa siempre
‫estaré usando el control C.
‫Entonces, eso es control y no comando C, de nuevo.
‫Incluso en una Mac, debe usar el control C.
‫Ahora hagamos esto de nuevo, obtenemos la misma respuesta, pero
‫ahora deberíamos tener algo en la consola.
‫Así que este es el objeto de solicitud y, como
‫mencioné, hay un montón de cosas aquí.
‫¿Lo ves?
‫Todo esto, ni siquiera cabe en la consola.
‫Creo que
‫ni siquiera puedo mostrarte todos los datos interesantes que hay allí.
‫En realidad, aquí tenemos algunos encabezados, por lo que tenemos
‫el host y aquí tenemos algunos ...
‫Nuevamente, tenemos algunos encabezados http,
‫que es algo de lo que vamos a hablar,
‫creo que en el próximo video.
‫De todos modos, lo que importa aquí
‫es que realmente tenemos acceso a
‫todo tipo de cosas cuando manejamos la solicitud y enviamos la respuesta.
‫No importa aquí, eliminémonos de esto, salvemos
‫y luego salgamos de esto y empecemos de nuevo.
‫Y ahora, solo para terminar este
‫video, quiero mostrarles lo que realmente vamos a construir en
‫las próximas conferencias hasta
‫el final de esta sección.
‫Así que es esta pequeña aplicación divertida llamada granja de nodos.
‫Tenemos un par de productos aquí,
‫y construimos todo esto aquí usando una plantilla html muy simple, y
‫luego puede hacer clic en el enlace y básicamente
‫lo llevará a
‫la página de detalles de este producto,
‫en este caso los aguacates.
‫Tiene un montón de datos aquí, un
‫botón que no hace nada, y luego podemos
‫volver a la página.
‫Entonces, aguacates, luego tenemos el queso, por
‫ejemplo, y luego, por supuesto,
‫tiene datos diferentes para cada uno de estos productos.
‫Así que tiene este bonito
‫diseño fresco y un poco loco para que resalte
‫un poco, y sí, creo que este es un pequeño proyecto divertido.
‫Y vamos a empezar a construirlo en
‫realidad, en el siguiente video.