javascript - 在socket.io 1.4.5中获取连接的IP

标签 javascript node.js socket.io ip ip-address

我想知道当用户连接到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 中。

<小时/>

虽然socket.io中似乎没有记录这些内容,但您可以使用以下命令获取远程IP地址和远程端口:

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

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

::ffff:192.168.1.56
51210

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

关于javascript - 在socket.io 1.4.5中获取连接的IP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39937902/

相关文章:

javascript - 使用 AJAX 将数据从 PHP 返回到 JavaScript - 数据类型错误?

javascript - 表格单元格中的 JS 工具提示位置

javascript - 在 Node.js 重新启动期间保留 setTimeout 和 setInterval

javascript - GraphQL 查询返回错误 "Cannot return null for non-nullable field"

node.js - Node JS 服务器到服务器连接

websocket - Firebase 的延迟是否足够低,可以用于实时 MMOG 而不是套接字?

javascript - 在 .replace() 中创建一个函数

javascript - 从服务器端向客户端发送 jwt token 的正确方法是什么?

Node.js + Socket.io + Redis 应用程序通过 PM2,内存占用较大

javascript - Paypal 智能按钮 : Is there any way onApprove runs without the payment having completed?