2016-11-20 1 views
0

Ich bin etwas neu zu NodeJS und all seiner Großartigkeit. Ich versuche herauszufinden, wie man geoip-lite und request-ip npm Pakete kombiniert, um den ungefähren Benutzerstandort für meine App zu erhalten.Nodejs Client IP

Bisher habe ich diese

var requestIp = require('request-ip'); 
var geoip = require('geoip-lite'); 
var express = require('express'); 
var app = express(); 

//var ip = "108.219.41.178";//207.97.227.239 
//var ip = req.headers['x-real-ip'] || req.connection.remoteAddress; 
//var ip = req.header('x-forwarded-for') || req.connection.remoteAddress; 

var ip = ??? 

var geo = geoip.lookup(ip); 

var port = process.env.PORT || 3000; 

/*app.use('/', function(req, res, next) { 
    var ipMiddleware = function(req, res, next) { 
    var clientIp = requestIp.getClientIp(req); 
    next(); 
    }; 
});*/ 

app.get('/', function(req, res) { 
    res.send('<html><head><head/><body><h1>Hello World!</h1></body></html'); 
}); 


app.listen(port, function() { 
    console.log('Hello on 3000');/*always put console.log to see if its running/working*/ 
    console.log(geo); 
    console.log("The IP is %s", geoip.pretty(ip)); 
}); 

/*node app.js to run*/ 

// var ip = req.headers['x-real-ip'] || req.connection.remoteAddress; 

Ich habe Probleme, herauszufinden, über die IP Wunsch-ip zu erhalten. GeoIP-Lite war ziemlich einfach, dauerte 2 Minuten. Ich denke, meine Noobnität zu Nodejs hilft auch nicht. Ein Codebeispiel, um mir zu zeigen, was ich falsch mache oder nicht denke, wäre großartig.

+0

Welche URL verwenden Sie zum Testen? ist es zufällig so etwas wie 'http: // localhost: 3000 /'? – Sgnl

Antwort

0

Ich denke, das Problem ist wie Sie Anfragen an den Server machen.

Für die Tests, wenn Sie eine URL wie http://localhost:3000 dann verwenden werden Sie ::1

aber erhalten, wenn statt http://127.0.0.1:3000 versuchen dann werden Sie wahrscheinlich die IP-Adresse erhalten: ::ffff:127.0.0.1

Hier ist der Express Code, den ich verwendet habe, um zu testen, und ich verwendete Postman App, um Anfragen zu machen

const Express = require('express'); 
const App = Express(); 

App.get('/', (req, res) => { 
    var ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress || req.socket.remoteAddress; 
    res.send({ ip }) 
}); 

App.listen(3000);