node (1): hola mundo

Un primer servidor con node js

Aleksandra Ekster

archivado en: JavaScript / 7 marzo, 2015 / taller:

Comienzo con esta entrada una serie dedicada a node js, que, como es sabido, es un entorno de programación basado en javaScript que corre del lado del servidor. Se puede utilizar para armar un server que atienda las peticiones http, que cumpla funciones de mensajería, que soporte un chat, etcétera, pero también para desarrollar una aplicación de escritorio gracias a node webkit y hasta para programar robots (los nodebots ^^).

A diferencia de otras tecnologías punteras, está bien documentada en español, por lo que me podría haber ahorrado esta serie, pero me gusta escribir de lo que me gusta programar : ), así que sin más, al lío.

Instalación

Lo descargamos, lo instalamos y, para empezar a ver cómo funciona, vamos con el inevitable hola mundo. La jugada es la siguiente:

1. Node está formado por diversos módulos que no se cargan juntos de golpe, sino que se van solicitando a medida que se van necesitando mediante el método require() cacheado en una variable. Para nuestro hola mundo, por ejemplo, requeriremos el módulo http.

var http = require('http');

2. Una vez cacheado el módulo en una variable, o una constante (oh sí, ahora existen constantes en js xD), podemos usar todos sus métodos. En nuestro caso vamos a utilizar createServer, crear servidor, al que le pasaremos una función callback dos parámetros: req, para gestionar los request, esto es, las peticiones del cliente; y res, para los responses, las respuestas del servidor.

3. Req y res, que podemos llamar como sea, son instancias respectivamente de http.ServerRequest y de http.ServerResponse, por lo que podemos acceder desde aquí todos sus métodos. En concreto, nos interesa el método writeHead(), para definir encabezados (header), que usaremos para indicar que nuestro server enviará texto plano en el 200 (y si no sabes de qué estoy hablando, por favor, mira esta entrada); y end(), con el que definimos el mensaje.

4. Por último, indicaremos que nuestro servidor se ponga a la escucha en el puerto 3000.

Todo junto en un archivo que podemos llamar hola-mundo.js:

/*  hola-mundo.js */

var http = require('http');

http.createServer(function(req, res) {

res.writeHead(200, {'Content-Type': 'text/plain'});

res.end('Hola Mundo')

}).listen(3000);

console.log("Servidor funcionando en localhost:3000. Ctrl+C para terminar");

Vamos por consola al directorio donde hayamos guardado el archivo y lo ejecutamos con node:

node hola-mundo.js

Ale op, en localhost:3000 vemos un espléndido "Hola Mundo" y en la consola «Servidor funcionando en localhost:3000. Ctrl+C para terminar».

Veamos ahora algo de http.ServerRequest, como por ejemplo request.url, una cadena que contiene la URL que se ha solicitado por parte del cliente. La vamos a cachear en la variable path y luego «enviaremos» al cliente a un sitio u otro con un switch case de toda la vida.

Reemplazamos el código anterior por algo así:

const http = require('http');

http.createServer(function(req, res) {

/* Normalizamos la url que nos envíen, quitando query strings y lowerizandolo */

var path = req.url.replace(/\/?(?:\?.*)?$/, '').toLowerCase();

switch(path) {

case '':

res.writeHead(200, {'Content-Type': 'text/plain'});

res.end('Soy la Portada');

break;

case '/otra':

res.writeHead(200, {'Content-Type': 'text/plain'});

res.end('Soy otra página');

break;

default:

res.writeHead(404, {'Content-Type': 'text/plain'});

res.end('página no encontrada');

}

}).listen(3000);

El lector atento habrá observado que esta vez he cacheado el módulo en una constante, por lo que a la hora de ejecutar nuestro archivo, indicaremos con el flag --harmony que se debe emplear esta versión de js.

node --harmony hola-mundo.js

Ahora en localhost:3000 nos aparece un «Soy la Portada» y en http://localhost:3000/otra «Soy otra página».

Bueno, pues de momento basta con que hayamos entendido que node se carga bajo demanda cacheando los «módulos» en variables o constantes.

|| Tags: , ,

valoración de los lectores sobre node (1): hola mundo

  • estrellica valoración positiva
  • estrellica valoración positiva
  • estrellica valoración positiva
  • estrellica valoración positiva
  • estrellica valoración positiva
  • 5 sobre 5 (1 votos)

¿Te ha parecido útil o interesante esta entrada?
dormido, valoración 1 nadapensativo, valoración 2 un poco sonrisa, valoración 3 a medias guiño, valoración 4 bastante aplauso, valoración 5 mucho

Tú opinión es muy importante, gracias por compartirla!

Los comentarios están cerrados.