如何在socket.io中获取客户端IP地址

时间:2016-07-16 20:23:30

标签: node.js sockets socket.io

嗨我有问题在socket.io版本1.3.7中获取客户端IP地址之前更新其工作完美但在更新后我得到每次undefined这是我的代码,我在更新前使用

这是我的服务器端代码

sockets.on('connection',function(sock){

var address = sock.handshake.address;

这从客户端发送ip地址

var remote = 'http://my_ip_address:9008/';
    socket = io.connect(!!local ? local : remote);
    socket.on("connect", function () {
    console.log("connected");
            getData();
    });

更新后它无法在socket.io版本1.3.7中工作所以请帮助我解决这个问题并建议1.3.7版本的完美代码

2 个答案:

答案 0 :(得分:2)

我对插座不太满意,但我想这会对你有帮助。

您需要使用 address.address 和端口 address.port

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

对于Socket.io ver 1.0 服务器端:

sockets.on('connection',function(sock){ 
    var clientIpAddress = sock.request.headers['x-forwarded-for'] || sock.request.connection.remoteAddress;
    console.log(' new request from : '+clientIpAddress);
});

答案 1 :(得分:0)

这是我的做法,截至2019年2月20日:

let ip = _.has(socket.handshake.address, 'address') 
              ? socket.handshake.address.address 
              : socket.handshake.address;
if (ip === "127.0.0.1") {
  ip = _.has(socket.handshake.headers, 'x-real-ip') 
            ? socket.handshake.headers['x-real-ip'] 
            : socket.handshake.headers['x-forwarded-for'];
}

lodash的{​​{3}}

的帮助下