在 socket.io 1.4.5 中获取连接 IP

Get IP of connection in socket.io 1.4.5

我想知道当用户连接到服务器 n socket.io 时如何获取用户的 IP。我试过使用这段代码,它应该像这样记录连接地址和端口:

var io = require('socket.io')(serv, {});
io.sockets.on('connection', function(socket) {
  var address = socket.handshake.address;
  console.log('New connection from ' + address.address + ':' + address.port);
  socket.on('request', function(data) {
    console.log('Request Sent')
    length = data.length
    if (data.request == 'sessionID') {
      socket.emit('sendSessionID', {
        id: generateSessionID(length)
      });
      console.log('Sent session ID')
    }
    if (data.request == 'players') {

    }
  });
});
当我 运行 此代码虽然 address.address 未定义且与 address.port 相同。那么当我使用 1.4.5 时应该如何获取 IP 和端口?我找不到任何新更新的内容。

IP 地址在 socket.handshake.address,而不是 socket.handshake.address.address


虽然 none 似乎记录在 socket.io 中,但您可以使用这些获取远程 IP 地址和远程端口:

socket.request.connection.remoteAddress
socket.request.connection.remotePort

当我从局域网中的另一台计算机连接到 socket.io 服务器时,我看到了上述两个设置的输出:

::ffff:192.168.1.56
51210

这正确地为您提供了连接到您的服务器的远程计算机的 IP 地址和端口。 IP 地址 ::ffff:192.168.1.56 是一个 IPv4 映射地址。您将不得不在某些系统上处理这种形式的地址。