Según Wikipedia: «Node.js es un entorno de programación en la capa del servidor basado en el lenguaje de programación Javascript, con I/O de datos en una arquitectura orientada a eventos y basado en el motor Javascript V8.». ¿Y todo esto que es? Pues es un servidor que se encarga de enviar eventos a tiempo real a través de TCP y que podremos capturar a través de interfaces web o apis REST de tal manera que ahorramos consultas a bases de datos para mostrar eventos en Ajax.

intalación de Node.js

Para instalarlo en Ubuntu, lo mejor es usar el PPA con los siguientes comandos:

sudo apt-get install python-software-properties python g++ make
sudo add-apt-repository ppa:chris-lea/node.js
sudo apt-get update
sudo apt-get install nodejs

mientras que si lo queremos instalar en Raspbian (raspberry pi):

sudo apt-get install nodejs npm

unos conceptos básicos

Mientras que estamos acostumbrados en otros servidores, a tener un directorio donde funciona sólo ahí el servidor, en Node.js este se puede ejecutar donde queramos:

node servidor.js

El servidor se programa en javascript, SI, en javascript y podemos usar librerías de terceros que podemos añadir desde repositorios.

npm, el gestor de paquetes de node.js

Existen infinidad de librerías o módulos que amplían la funcionalidad de Node.js y para instalarlas sólo hay que ejecutar npm y la libreria a instalar:

npm install socket.io express redis validator

ejemplos prácticos

holamundo.js

console.log("Hola Mundo");

holamundo-consola.js

// Incluir el modulo http.
var http = require('http');
 
// Responder con Hola Mundo a todas las peticiones.
var server = http.createServer(function (request, response) {
  response.writeHead(200, {"Content-Type": "text/plain"});
  response.end("Hola Mundo\n");
});
 
// Escuchar al puerto 8000 en localhost.
server.listen(8000);
 
// Mensaje de salida en la terminal.
console.log("Servidor funcionando en http://127.0.0.1:8000/");

contador-consola.js

// Incluir el modulo http.
var http = require('http');
 
var contador = 0;
http.createServer(function (request, response) {
    console.log('Nueva conexion');
    contador++;
 
    response.writeHead(200, {'Content-Type': 'text/plain'});
    response.write('¡Hola!\n');
    response.write('¡ '+contador+' visitas!\n');
    response.end();
}).listen(8080);
 
// Mensaje de salida en la terminal.
console.log("Servidor funcionando en http://127.0.0.1:8000/");