Лучший node.js модуль для поиска местоположения?
Я нашел пару node.js модулей для поиска информации о местоположении клиента и сети с использованием IP-адреса.
Требования:
-
Местоположение - страна, город, штат, широта, долгота и т.д.
-
Сеть - поставщик интернет-услуг, тип подключения к Интернету и скорость интернета и т.д.
-
Точность данных - максимальная возможность.
Примечание: Ищете решение на стороне сервера.
В вышеупомянутых модулях используются данные maxmind. И я читал о точности данных maxmind.
Я немного смущен, чтобы выбрать вышеупомянутые модули node.js, и мне нравится знать, есть ли какие-либо лучшие рамки node.js, доступные для поиска информации, которая соответствовала моим требованиям или любым другим языковым плагинам, которые могут быть переносимыми для node.js.
Любая идея будет полезна.
Ответы
Ответ 1
Использование геолокации на основе 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 и будет наиболее точным вариантом. Документация довольно хорошая - так что начать с этим не составит труда.
Ответ 2
Если вы получаете IP-адрес, вы всегда можете вызвать внешнюю службу, чтобы получить информацию о местоположении, такую как 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
Для сетевой информации у меня нет решения, но я тоже ищу его.
Ответ 3
Вы можете получить всю интересующую вас информацию из моего 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