Лучший модуль node.js для поиска местоположения?
Я нашел пару модулей node.js для поиска информации о местонахождении клиента и сети по IP-адресу.
Требования:
Местоположение - страна, город, штат, широта, долгота и т. Д.
Сеть - Интернет-провайдер, тип интернет-соединения, скорость интернета и т. Д.
Точность данных - максимальная возможность.
Примечание. Ищете решение на стороне сервера.
Вышеупомянутые модули используют данные maxmind. И я читал о точности данных MaxMind.
Я немного растерялся, выбирая вышеупомянутые модули node.js, и мне хотелось бы знать, существуют ли какие-либо более эффективные платформы node.js для поиска информации, отвечающей моим требованиям, или любые другие языковые плагины, которые могут быть перенесены в node.js.
Любая идея будет отличной.
3 ответа
Использование геолокации на основе IP возможно, но не очень точно. Поэтому я предлагаю вам подумать о гибридном подходе, таком как попытка определить местоположение пользователей с помощью API геолокации HTML5 внутри браузера и откатиться на сервер, если это необходимо.
Я взглянул на два наиболее используемых модуля geoip/-location, доступных для node.js, и они оба используют наборы данных, предоставленные MaxMind. AFAIK, вы должны поддерживать актуальность этих баз данных вручную, что является явным недостатком. Поэтому вы можете написать небольшой сервис / скрипт для синхронизации, который обновляет базу данных раз в месяц. (Более подробную информацию о бесплатном решении MaxMinds можно найти здесь).
kuno/GeoIP
это привязка GeoIP, поэтому в своей основе она использует библиотеку libGeoIP C, что нормально, но, возможно, не так переносимо, как реализация чистого JavaScript bluesmoon/node-geoip
предложения. Оба в порядке, и вам решать, какая библиотека вам больше нравится. С точки зрения производительности вы должны сделать несколько тестов производительности (если эта тема важна для вас)... Нет общего ответа на вопрос, какой тип модуля (C-binding/native) будет быстрее.
Если вы готовы потратить несколько долларов, вы также можете обратиться к веб-службе MaxMinds, которая представляет собой простой REST API и будет наиболее точным способом. Документация довольно хорошая - так что начать с этим не составит труда.
Если вы получаете IP, вы всегда можете позвонить во внешнюю службу, чтобы получить информацию о местоположении, такую как ht tp://freegeoip.net/ и используя модуль запроса.
(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
Для сетевой информации у меня нет решения, но я тоже его ищу.
Вы можете получить всю интересующую вас информацию из моего API на 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"
}
Он поддерживает JSONP и CORS, поэтому вы можете использовать его на стороне сервера или клиента. Более подробная информация доступна на http://ipinfo.io/developers