web-dev-qa-db-fra.com

Meilleur module node.js pour trouver l'emplacement?

J'avais trouvé quelques modules node.js pour trouver les informations sur l'emplacement du client et le réseau en utilisant l'adresse IP.

Exigences:

  1. Emplacement - pays, ville, état, latitude, longitude, etc.

  2. Réseau - Fournisseur de services Internet, type de connexion Internet et vitesse Internet, etc.

  3. Précision des données - possibilité maximale.

Remarque: Recherche d'une solution côté serveur.

Les modules mentionnés ci-dessus utilisent données maxmind . Et j'avais lu aussi sur le précision des données maxmind .

Je suis peu confus de choisir les modules node.js ci-dessus et j'aime savoir s'il existe de meilleurs frameworks node.js disponibles pour trouver des informations qui répondent à mes besoins ou tout autre plugin de langage pouvant être portable sur node.js.

Toute idée sera formidable.

47
karthick

L'utilisation de la géolocalisation basée sur IP est possible, mais pas très précise. Je vous suggère donc de penser à adopter une approche hybride, comme essayer d'obtenir l'emplacement des utilisateurs via l'API de géolocalisation HTML5 dans le navigateur et de revenir au côté serveur si nécessaire.

J'ai jeté un coup d'œil aux deux modules geoip/-location les plus utilisés disponibles pour node.js et ils utilisent tous les deux les ensembles de données fournis par MaxMind. AFAIK, vous devez maintenir ces bases de données à jour manuellement, ce qui est clairement un inconvénient. Vous pouvez donc envisager d'écrire un petit service/script de synchronisation, qui met à jour la base de données une fois par mois. (Plus d'informations sur la solution gratuite MaxMinds peuvent être trouvées ici ).

kuno/GeoIP est une liaison GeoIP, donc au fond, il utilise la bibliothèque libGeoIP C, ce qui est correct, mais peut-être pas aussi portable que l'implémentation JavaScript pure bluesmoon/node-geoip offres. Les deux sont corrects et c'est à vous de choisir la bibliothèque que vous préférez. En termes de performances, vous devez faire quelques benchmakrs (si ce sujet vous intéresse)… Il n'y a pas de réponse générale à la question, quel type de module (C-binding/native) sera plus rapide.

Si vous êtes prêt à dépenser quelques dollars, vous pouvez également consulter MaxMinds Web Service , qui est une simple REST API et sera le moyen le plus précis d'aller La documentation est assez bonne - donc commencer avec ça ne sera pas un problème.

46
dom

Si vous obtenez l'IP, vous pouvez toujours appeler un service externe pour obtenir les informations de localisation telles que freegeoip.net et utiliser le module de demande.

(ip, location) ->
  url = 'http://freegeoip.net/json/' + ip
  request.get url, (error, response, body) ->
    if !error && response.statusCode == 200
      data = JSON.parse body
      location data

Pour les infos réseau, je n'ai pas de solution, mais j'en cherche une aussi.

29
brnrd

Vous pouvez obtenir toutes les informations que vous recherchez auprès de mon API sur http://ipinfo.io API:

$ curl ipinfo.io
{
  "ip": "67.188.232.131",
  "hostname": "c-67-188-232-131.hsd1.ca.comcast.net",
  "city": "Mountain View",
  "region": "California",
  "country": "US",
  "loc": "37.4192,-122.0574",
  "org": "AS7922 Comcast Cable Communications, Inc.",
  "postal": "94043"
}

Il prend en charge JSONP et CORS, vous pouvez donc l'utiliser côté serveur ou côté client. Plus de détails sont disponibles sur http://ipinfo.io/developers

11
Ben Dowling