2012-04-01 100 views
0

我使用now.js,並且有一行指向localhost。爲了讓某人訪問外部服務器,我需要將localhost修改爲我的計算機的當前外部IP(我的IP是動態的)。有沒有辦法從腳本中檢測當前的外部IP?如何從node.js獲得服務器的外部ip

window.now = nowInitialize("//localhost:8081", {}); 

回答

3

你可以問一個外部服務,如this one(這很好,因爲它沒有格式化就返回它)。

要使用它,你可以使用Node's built in http module

require('http').request({ 
    hostname: 'fugal.org', 
    path: '/ip.cgi', 
    agent: false 
}, function(res) { 
    if(res.statusCode != 200) { 
     throw new Error('non-OK status: ' + res.statusCode); 
    } 
    res.setEncoding('utf-8'); 
    var ipAddress = ''; 
    res.on('data', function(chunk) { ipAddress += chunk; }); 
    res.on('end', function() { 
     // ipAddress contains the external IP address 
    }); 
}).on('error', function(err) { 
    throw err; 
}); 

請記住,外部服務可以去或改變 - 這已經發生過一次了,這種無效答案。我已經更新了,但是這可能會再次發生...

+0

我該如何獲得從網站返回的IP? – 2012-04-01 07:33:35

+0

@Kyoka:我添加了一些代碼。看我的編輯。 – icktoofay 2012-04-01 21:09:38

+0

這將不再工作,該網站現在顯示圖像中的IP地址。 – 2013-07-29 04:46:44