2014-12-30 58 views
0

我正在從事NODE.JS項目的工作,當用戶登錄時,他的區域天氣會自動顯示在他的儀表板上。 據我瞭解,當一個客戶來:如何獲得NODEJS中的隨機客戶端IP

1)他的ip是追溯到哪個m使用請求-IP

2)然後根據這個ip尺寸他的面積可以確定。對於這個米使用satelize

3)然後根據經度和緯度,可以藉助forcast.io預測他所在地區的天氣。

問題是向中間件發送請求,m得到回送ip。(localhost:3000)。同時我想獲得任何隨機客戶端的ip.so,我可以檢查我的api是否正常工作。 這裏是我的代碼:

router.get('/',function(req,res){ 

    var clientIp = requestIp.getClientIp(req); //inside middleware handle 

    satelize.satelize({ip:clientIp}, function(err, geoData) { // if data is JSON, we may wrap it in js object 

    var obj = JSON.parse(geoData); 

    forecast.get([obj.latitude, obj.longitude], function(err, weather) { 

     if(err) return console.dir(err); 

     console.log(weather); 

    }); 

    }); 

}); 
+0

顯示一些代碼,使你嘗試過什麼 – micnic

+0

router.get( '/',函數(REQ,RES){VAR = clientIp requestIp.getClientIp(REQ); // 裏面中間件手柄 satelize.satelize({ ip:clientIp},function(err,geoData){//如果數據是JSON,我們可以將它包裝在js對象中var obj = JSON.parse(geoData); forecast.get([obj.latitude,obj (err)return console.dir(err); console.log(weather); });; });; });函數(err,weather){ } –

+0

請編輯你的問題與你寫的評論的內容 – micnic

回答

0

如果我理解正確的話,你希望你的本地計算機上進行開發時使用隨機IP地址。爲了做到這一點,你必須根據你的環境設置clientIp變量。您可以使用NODE_ENV進行此操作,請參閱https://stackoverflow.com/a/16979503/2494649以獲得很好的解釋。

如果你想使用一個隨機客戶端的IP地址,你必須自己收集這些地址並將其設置爲clientIp。你可以例如設置一個隨機客戶端ip的數組並隨機使用它們。

var randomIps = ['1.2.3.4', '5.6.7.8', '123.123.123.123']; 
var clientIp; 

if(process.env.NODE_ENV === 'development') { 
    // Select random IP address 
    clientIp = randomIps[Math.floor(Math.random()*randomIps.length)]; 
} else { 
    clientIp = requestIp.getClientIp(req); //inside middleware handle 
} 

你可以使用你的應用程序到您的客戶端IP地址保存到數據存儲(匿名),並使用這些地址向clientIp變量提供一個隨機的IP地址。