2013-04-24 159 views
0

在我的節點應用程序中,我需要獲取使用socket.io.的用戶的IP地址,我嘗試了下面的代碼,但直到我得到127.0.0.1.How我可以得到我的IP地址。如何使用socket.io獲取用戶的IP地址?

1.

var io = require("socket.io").listen(server); 

    io.sockets.on("connection", function (socket) { 
    var address = socket.handshake.address; 
    console.log("New connection from " + address.address + ":" + address.port); 
} 

2.

var io = require('socket.io').listen(80); 
    io.sockets.on('connection', function (socket) { 
    var endpoint = socket.manager.handshaken[socket.id].address; 
    console.log('Client connected from: ' + endpoint.address + ":" + endpoint.port); 
    }); 

3.

var socket = io.listen(server); 
     socket.on('connection', function(client){ 
      var ip_address = client.connection.remoteAddress; 
     }); 
+1

我敢肯定,如果你在本地運行節點你的ip _is_ 127.0.0.1。任何其他IP很可能不相關。 – 2013-04-24 07:19:29

+0

是的,我的應用程序在本地運行本地主機:4000 .. – sachin 2013-04-24 07:27:26

+1

那麼你得到正確的IP。如果你把應用程序放在外部服務器上,你會得到你的isp提供的任何ip(如果你是谷歌「ip」,你會看到這個ip)。如果你把它放在同一網絡上的另一臺機器上,你會在內部網絡中獲得你的機器IP地址。 – 2013-04-24 07:32:34

回答

2

試試這個,這對我的作品。

Var client = require('socket.io').listen(8080).sockets; 

client.on('connection',function(socket){ 
var clientIpAddress= socket.request.socket.remoteAddress; 
}); 
+0

該行'socket.request.socket.remoteAddress'返回websocket IP地址不是用戶的IP。我不確定我在這裏做錯了什麼。通過我的代碼是一樣的你的 – 2015-09-15 00:11:50