Hasta ahora, tus programas en Node.js se ejecutan, hacen algo y terminan. Un servidor es diferente: se ejecuta y se queda esperando. Esperando peticiones.
Cada vez que abres una página web, tu navegador envía una petición HTTP a un servidor. El servidor la recibe, la procesa y devuelve una respuesta. Eso es todo lo que hace un servidor web: recibir preguntas y dar respuestas.
Y con Node.js, puedes construir uno en pocas líneas.
Node.js incluye un módulo llamado http que te da todo lo necesario para crear un servidor, sin instalar nada externo:
Escribe esto en el editor, ejecuta node index.js en la terminal, y tu servidor estará vivo. Cada vez que alguien visite http://localhost:3000, recibirá el mensaje "¡Hola desde mi servidor!".
http.createServer(callback)Crea un servidor. El callback se ejecuta cada vez que llega una petición. Recibe dos parámetros:
req (request): información sobre lo que pide el cliente (URL, método, headers...)res (response): el objeto que usas para enviar la respuestares.end(texto)Envía la respuesta al cliente y cierra la conexión. Es como decir "aquí tienes tu respuesta, hemos terminado".
server.listen(puerto, callback)Le dice al servidor que empiece a escuchar conexiones en el puerto indicado. El callback es opcional — se ejecuta cuando el servidor está listo.
Piensa en un puerto como la puerta de un edificio. Tu máquina puede tener muchos programas escuchando al mismo tiempo, cada uno en un puerto diferente:
localhost significa "esta máquina". Así que http://localhost:3000 significa "conéctate al programa que está escuchando en el puerto 3000 de este ordenador".
Puedes (y deberías) enviar más información en la respuesta, no solo texto:
writeHead establece el código de estado y las cabeceras de la respuesta:
| Código | Significado |
|---|---|
| 200 | Todo bien |
| 404 | No encontrado |
| 500 | Error del servidor |
Las cabeceras le dicen al navegador qué tipo de contenido estás enviando. text/plain es texto simple. Pronto veremos application/json para APIs.
Observa que después de ejecutar node index.js, la terminal no vuelve al prompt. El programa sigue corriendo, esperando peticiones. Eso es normal — un servidor está diseñado para funcionar continuamente.
Para detenerlo, presiona Ctrl + C en la terminal. Eso envía una señal de terminación al proceso.
httpcreateServer que responda con un mensaje de texto.listen()res.end()node index.js en la terminalAcabas de crear tu primer servidor web. Lo que parecía magia — un programa que responde cuando lo visitas desde el navegador — resulta que son unas pocas líneas de JavaScript.