[英]how to get client ip address in socket.io
您好,我在更新工作正常之前在socket.io版本1.3.7中獲取客戶端ip地址時遇到問題,但是在更新后我每次都未定義,這是我在更新之前使用的代碼
這是我的服務器端代碼
sockets.on('connection',function(sock){
var address = sock.handshake.address;
這是從客戶端發送IP地址
var remote = 'http://my_ip_address:9008/';
socket = io.connect(!!local ? local : remote);
socket.on("connect", function () {
console.log("connected");
getData();
});
更新后在socket.io版本1.3.7中不起作用,因此請幫助我解決此問題,並建議適用於1.3.7版本的完美代碼
我對套接字的使用並不多,但是我想這會對您有所幫助。
您需要使用address.address
並用於端口address.port
sockets.on('connection',function(sock){
var address = sock.handshake.address;
console.log('New connection from ' + address.address + ':' + address.port);
});
對於Socket.io ver 1.0 服務器端:
sockets.on('connection',function(sock){
var clientIpAddress = sock.request.headers['x-forwarded-for'] || sock.request.connection.remoteAddress;
console.log(' new request from : '+clientIpAddress);
});
截至2019年2月20日,這就是我的做法:
let ip = _.has(socket.handshake.address, 'address')
? socket.handshake.address.address
: socket.handshake.address;
if (ip === "127.0.0.1") {
ip = _.has(socket.handshake.headers, 'x-real-ip')
? socket.handshake.headers['x-real-ip']
: socket.handshake.headers['x-forwarded-for'];
}
在lodash
的.has()
的幫助下
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.