我想知道如何在用户连接到服务器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') {
}
});
});

答案 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映射地址。您将不得不在某些系统上处理这种形式的地址。