我想知道当用户连接到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') {
}
});
});
最佳答案
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/