Geolocalización en Node.js

Por Julio Giampiere Grados Caballero
Geolocalización en Node.js

Aprende a obtener el posicionamiento geográfico de tus clientes o usuarios con Node.js, logrando un conexión directa con ellos.

Una de las necesidades cuando trabajamos aplicaciones web de gran complejidad, es conocer la localización de los usuarios que acceden nuestros sitios web, por lo que nodejs, a través de su manejador de paquetes npm, nos trae geoip-lite, que conoceremos en este tutorial.

Geoip-lite, es una biblioteca completamente nativa de JavaScript. Un script convertidor, el módulo geoip utiliza un archivo binario para buscar direcciones IP y devolver el país, la región y la ciudad a la que se asigna.

¿Por qué usar geoip-lite?

Npm ya tiene un paquete geoip que proporciona un enlace JavaScript alrededor de libgeoip. El paquete geoip está completo y soporta todo lo que admite la API de MaxMind, sin embargo, requiere que libgeoip se instale en su sistema.

Geoip-lite por otro lado es una implementación completamente JavaScript. No es tan completo como geoip sin embargo, al reducir su alcance, es un 40% más rápido en hacer búsquedas. En promedio, una búsqueda de IP a la ubicación debe tomar 20 microsegundos en un Macbook Pro. Las direcciones IPv4 tardan unos 6 microsegundos, mientras que las direcciones IPv6 tardan unos 30 microsegundos.

Instalación

Para obtener la librería debemos indicar a través de npm el siguiente comando:

$ npm install geoip-lite

Geoip-lite es completamente sincrónico. No hay devoluciones de llamada. Todas las llamadas en tiempo de ejecución se ejecutan en la memoria y son rápidas. El inicio puede tardar hasta 200 ms mientras se lee en la memoria e indexa los archivos de datos.

Forma de uso

var geoip = require('geoip-lite');

var ip = "207.97.227.239";
var geo = geoip.lookup(ip);

console.log(geo);
{ range: [ 3479297920, 3479301339 ],
  country: 'US',
  region: 'TX',
  city: 'San Antonio',
  ll: [ 29.4889, -98.3987 ],
  metro: 641,
  zip: 78218 }

Descripción de los parámetros obtenidos:

  • range: Intervalo:
    [, ]
  • country: 2 letras ISO-3166-1 del código de país.
  • region: código de regiones en 2 caracteres.
  • city: nombre completo de la ciudad.
  • ll: latitud y longitud de la ciudad.
  • metro: código metro.
  • zip: código postal.

Uso en proyecto:

var geoip = require('geoip-lite');
 
router.route('/usuarios/')
.get( function (req, res) {
var ip = req.ip
var geo = geoip.lookup(ip);
console.log(geo);
//demás del código
});

Para obtener el ip de navegación lo hacemos a través de request, que cuenta con ese dato, una vez recibido ese dato, podremos usar geoip y trabajar con los datos antes mostrador, recordar que geoip, puede usar tanto en un llamado get como también post; y antes de usarse geoip, a de requerirse su módulo.

Bien así hemos terminado con este tutorial, donde aprendimos a obtener la ubicación geográfica de los usuarios ingresantes como tráfico a nuestras aplicaciones web, te recuerdo que para conocer más sobre esto y demás temas sobre Node.js contamos con el Curso de Node.js, Fundamentos de Node.js y el Curso Avanzado de Node.js. Nos leemos en un próximo tutorial.

¿Te gustó el tutorial?

Ayúdanos a llegar a más personas

Julio Giampiere Grados Caballero

Julio Giampiere Grados Caballero

CTO y Cofundador de Devcode.la. Full stack JavaScript. React | jQuery | Vanilla | Backbone | Node | MongoDB.