簡體   English   中英

如何在socket.io中獲取客戶端IP地址

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM