adsense

XRL Tech Corner

Tutoriales online de programación, CMS, Raspberry y artículos sobre tecnología.

Cómo programar servidor web en nodeJS

En este tutorial vamos a hacer un tutorial Node.js para programar un servidor web en 5 minutos.
En tan sólo 5 minutos? Así es, y con poco más de cuatro o cinco líneas de código.

Qué es node js?

Node.js es un framework de Javascript orientado a la parte servidora. Es orientado a eventos y está basado en el motor V8 de Google.

node js logo




La mayoría de los developers que trabajan con tecnologías de Internet conocen Javascript en la parte cliente. Básicamente se ha extendido su uso en los navegadores junto el HTML y los CSS. Pero hace unos 6 años entró en escena este framework para usarlo en la parte servidora.

Incluso hoy en día gracias a Electron, se puede utilizar para crear aplicaciones de escritorio en Javascript, como por ejemplo Atom, un editor de código.

En otros lenguajes como Java, necesitamos un servidor de aplicaciones como por ejemplo Weblogic, para poder ejecutar el código en la parte servidora. Para Node.js esto no es necesario ya que la propia aplicación ya puede realizar la función de servidor web. Aunque también es posible utilizar un servidor web, como por ejemplo Nginx junto con Node.js.



Usar Node.js en la parte servidora nos permite realizar un desarrollo más coherente, y más integrado, ya que usamos las mismas tecnologías en ambos extremos. Además está orientado a eventos, y no es bloqueante, con lo que nos encontraremos que las funciones no se invocan una después de la otra, sino que las funciones son de tipo "callback", es decir, son invocadas cuando un evento es disparado por alguna acción.

En el tutorial que vamos a mostrar a continuación realizaremos la instalación de Node.js en Ubuntu y crearemos un servidor web básico.  Si quieres aprender a programar node js (con express) en un curso con hasta un 74% de descuento, ahora es el momento de hacerlo, ya que hay una especie de "moda" y muchas startups y grandes empresas se estan pasando a Javascript.


Para empezar el tutorial recuperaremos la máquina virtual que creamos en el post: cómo instalar Linux en una máquina virtual de VirtualBox.

Instalar node js

Abriremos la máquina virtual y una vez arrancado el sistema operativo abriremos una consola con Ctr + Alt +T. Allí escribiremos:

sudo apt-get update
sudo apt-get install nodejs

Recomendado Si quieres programar el ejemplo puedes utilizar el siguiente entorno nodejs sobre Ubuntu (sólo para usuarios registrados):

 

 También tienes disponible el código fuente del tutorial en GitHub


Una vez finalizado esto nos dejará instalado en nuestro Linux las librerías básicas de Node.js.

Cómo crear un servidor

A continuación crearemos un proyecto en una carpeta de nuestra $HOME con mkdir servidor-web-nodejs y dentro de la carpeta usamos el gestor de paquetes (npm) para crear un fichero package.json que contiene la configuración del proyecto. Con el comando npm init nos irá haciendo preguntas y al final nos creará el fichero package.json con la configuración básica del proyecto.

Por cierto, este fichero está en formato JSON, pincha en qué es JSON para conocer todos los detalles, y incluso puedes validar json también.

 

npm también permite instalar módulos que se pueden usar en el proyecto. Existe un modo global (npm -g) que instala los módulos para que todos los proyectos puedan usarlos.

Vamos a crear un fichero de texto que contendrá el código fuente del servidor web.

Crearemos dentro de la carpeta servidor-web-nodejs un fichero editando con vi servidor.js y escribiremos el código siguiente:

var http = require('http');
function handleRequest(request, response){
    response.end('Correcto!: ' + request.url);
}
var server = http.createServer(handleRequest);
server.listen(8888, function(){
    console.log("Arrancado y escuchando en el puerto 8888");
});


La función handleRequest se invoca cada vez que el servidor recibe una petición HTTP.

En esa función, a partir del objeto request podemos obtener el método (GET, POST), la url, los headers (como el user-agent). El objeto response maneja la respuesta y podemos fijar entre otras cosas el código de estado (404, 500), los headers (con Content-Type), incluso escribir el cuerpo del mensaje con código html con la función write y end

Volviendo al ejemplo, una vez tengamos el fichero listo, lo grabaremos y desde la misma consola de Linux escribiremos nodejs para ejecutarse:

nodejs servidor.js


A continuación se nos mostrará una linea por la pantalla:

Arrancado y escuchando en el puerto 8888 
Eso nos indicará que el proceso está ejecutándose y listo para aceptar peticiones http.
Con lo que a continuación abriremos un navegador web, desde dentro o desde fuera de la máquina virtual, y escribiremos:
 
http://IP:8888 donde la IP es la dirección IP de la máquina virtual. 
O desde dentro de la máquina virtual sería http://localhost:8888
 
Nos mostrará la pantalla:

navegador servidor nodejs ok

 
Hay gente que prefiere testear la conexión dentro del mismo terminal Linux, para ello suelen usar curl http://localhost:8888. Ese comando devuelve el código HTML y permite hacer un checkeo rápido de la respuesta del servidor.
 
Bastante impresionante no? Y aún nos han sobrado unos minutos! 
Con este ejemplo, podemos ejecutar un servidor HTTP básico, que es el bloque principal de una aplicación Nodejs, pero obviamente no dispondremos de demasiada funcionalidad...

Para completar un poco el ejemplo vamos a continuar implementando una funcionalidad que llamaremos enrutador. Este objeto nos permitirá gestionar la petición cuando se reciba en el servidor, para luego poder implementar funcionalidades del estilo: servir páginas html, css, imágenes según lo que nos indiquen en la URL.

Para ello tendremos que instalar el módulo httpdispatcher. Si no tenemos instalado ningún manejador de paquetes para node.js, tendremos que instalar uno (npm) con :

sudo apt-get install npm
 
A continuación usaremos npm para descargar e instalar el módulo httpdispatcher que es el que necesitaremos para crear el enrutador
Dentro del directorio servidor anteriores, escribiremos:
 
npm install httpdispatcher


Nos sacará la siguiente salida:

(desactualizado! las versiones van cambiando)
npm http GET https://registry.npmjs.org/httpdispatcher
npm http 200 https://registry.npmjs.org/httpdispatcher
npm http GET https://registry.npmjs.org/httpdispatcher/-/httpdispatcher-1.0.0.tgz
npm http 200 https://registry.npmjs.org/httpdispatcher/-/httpdispatcher-1.0.0.tgz
npm http GET https://registry.npmjs.org/mime
npm http 200 https://registry.npmjs.org/mime
npm http GET https://registry.npmjs.org/mime/-/mime-1.3.4.tgz
npm http 200 https://registry.npmjs.org/mime/-/mime-1.3.4.tgz
httpdispatcher@1.0.0 node_modules/httpdispatcher
└── mime@1.3.4

 

Perfecto, ahora ya podremos usar este módulo en nuestro servidor. 
Vamos a hacer que cuando se pida la raíz de la URL se devuelva la página index.html.  
Podéis usar cualquier código html, por ejemplo este:



El código del fichero servidor.js quedaría de la siguiente manera:

var http = require('http');
var  HttpDispatcher = require('httpdispatcher');
var enrutador = new HttpDispatcher(); //actualizado nueva versión var fs = require('fs'); //maneja una petición function handleRequest(request, response){ console.log("Peticion:"); console.log(request.url); enrutador.dispatch(request, response); } //creamos el servidor y lo ponemos a escuchar en el puerto 8888 var server = http.createServer(handleRequest); server.listen(8888, function(){ console.log("Arrancado y escuchando en el puerto 8888"); }); //creamos la función que trata un GET de la raiz en el enrutador //para que cargue el fichero index.html y lo devuelva en la respuesta enrutador.onGet("/", function(req, res) { var retHtml = function(content) { res.writeHead(200, {'Content-Type': 'text/html'}); res.end(content, 'utf-8'); } var retError = function(code, content) { res.writeHead(code, {'Content-Type': 'text/plain'}); res.end(content); } fs.readFile('./index.html', function(error, content) { if (error) { retError(500); } else { retHtml(content); } }); });

 Hemos añadido también el módulo fs que sirve para tratar ficheros, para poder leer el contenido del index.html
Una vez tengamos el fichero listo, lo grabaremos y desde la misma consola de Linux escribiremos nodejs para ejecutarse:

nodejs servidor.js


A partir de ahí, a continuación abriremos un navegador web, desde dentro o desde fuera de la máquina virtual, y escribiremos:

 
http://IP:8888 donde la IP es la dirección IP de la máquina virtual. 
O desde dentro http://localhost:8888
 
Nos mostrará la pantalla:



servidor web nodejs hola mundo


Con este ejemplo damos por finalizado el tutorial de node.js para aprender como programar un servidor web muy básico.
 
Si estás interesado en aprender a programar en Node.js, te recomendamos uno de los mejores bootcamps de programación de Node.js

Existen un montón de módulos para este framework que nos van a facilitar el trabajo, y nos permitirá centrarnos en el negocio de nuestra aplicación.
Hemos visto que es relativamente rápido y fácil de usar, sobretodo conociendo de antemano Javascript del lado del cliente.
Valora este artículo del blog:
Instalar Joomla en Ubuntu
Base de datos nosql mongodb

Artículos relacionados

 

Comentarios

No hay comentarios por el momento. Se el primero en enviar un comentario.
¿Ya està registrado? Ingresa Aquí
Invitado
Viernes, 20 Octubre 2017
Si desea registrarse, por favor rellene los campos de nombre de usuario y nombre.

Imagen Captcha