问题
I would like to know how to get the IP of a user when they connect to the server n socket.io. I have tried using this code which is supposed to log the connection address and port like this:
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') {
}
});
});
回答1:
The IP address is in socket.handshake.address
, not socket.handshake.address.address
.
Though none of this appears to be documented in socket.io, you can get the remote IP address and the remote port with these:
socket.request.connection.remoteAddress
socket.request.connection.remotePort
When I connect to a socket.io server from another computer on my LAN, I see these output from those above two settings:
::ffff:192.168.1.56
51210
This is correctly giving you the IP address and the port of the remote computer that is connecting to your server. The IP address ::ffff:192.168.1.56
is an IPv4 mapped address. You will have to handle that form of address on some systems.
来源:https://stackoverflow.com/questions/39937902/get-ip-of-connection-in-socket-io-1-4-5