在 socket.io 1.4.5 中获取连接 IP
Get IP of connection in socket.io 1.4.5
我想知道当用户连接到服务器 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 和端口?我找不到任何新更新的内容。
IP 地址在 socket.handshake.address
,而不是 socket.handshake.address.address
。
虽然 none 似乎记录在 socket.io 中,但您可以使用这些获取远程 IP 地址和远程端口:
socket.request.connection.remoteAddress
socket.request.connection.remotePort
当我从局域网中的另一台计算机连接到 socket.io 服务器时,我看到了上述两个设置的输出:
::ffff:192.168.1.56
51210
这正确地为您提供了连接到您的服务器的远程计算机的 IP 地址和端口。 IP 地址 ::ffff:192.168.1.56
是一个 IPv4 映射地址。您将不得不在某些系统上处理这种形式的地址。
我想知道当用户连接到服务器 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') {
}
});
});
IP 地址在 socket.handshake.address
,而不是 socket.handshake.address.address
。
虽然 none 似乎记录在 socket.io 中,但您可以使用这些获取远程 IP 地址和远程端口:
socket.request.connection.remoteAddress
socket.request.connection.remotePort
当我从局域网中的另一台计算机连接到 socket.io 服务器时,我看到了上述两个设置的输出:
::ffff:192.168.1.56
51210
这正确地为您提供了连接到您的服务器的远程计算机的 IP 地址和端口。 IP 地址 ::ffff:192.168.1.56
是一个 IPv4 映射地址。您将不得不在某些系统上处理这种形式的地址。