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

时间:2016-10-08 22:15:02

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

我想知道如何在用户连接到服务器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和端口?我找不到任何新更新的内容。

1 个答案:

答案 0 :(得分:2)

IP地址位于import akka.pattern.ask import scala.concurrent.duration._ val system = ActorSystem("SimpleActorSystem") val actorObj1:ActorRef = system.actorOf(Props[HelloWorld],"helloworld1") val resFuture = (actorObj1 ? "Hi").mapTo[Int] val res = Await.result(resFuture, 5 seconds) println(res) ,而不是socket.handshake.address

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

socket.handshake.address.address

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

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

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