如何使用 socket.io 获取用户的 IP 地址?

Posted

技术标签:

【中文标题】如何使用 socket.io 获取用户的 IP 地址?【英文标题】:How to get user's ip address using socket.io? 【发布时间】:2013-04-17 14:42:34 【问题描述】:

在我的节点应用程序中,我需要使用 socket.io 获取用户的 IP 地址。我尝试了下面的代码,但直到我得到 127.0.0.1。我怎样才能获得我的 IP 地址。

1.

  var io = require("socket.io").listen(server);

    io.sockets.on("connection", function (socket) 
    var address = socket.handshake.address;
    console.log("New connection from " + address.address + ":" + address.port);
 

2.

   var io = require('socket.io').listen(80);
     io.sockets.on('connection', function (socket) 
     var endpoint = socket.manager.handshaken[socket.id].address;
     console.log('Client connected from: ' + endpoint.address + ":" + endpoint.port);
  );

3.

   var socket = io.listen(server);
       socket.on('connection', function(client)
          var ip_address = client.connection.remoteAddress;
       );

【问题讨论】:

我很确定如果你在本地运行节点,你的 ip 127.0.0.1。任何其他 ip 很可能无关紧要。 是的,我的应用正在本地运行 localhost:4000.. 那么你得到了正确的ip。如果您将应用程序放在外部服务器上,您将获得您的 isp 提供的任何 ip(如果您使用谷歌“ip”,您会看到)。如果你把它放在同一网络上的另一台机器上,你会得到你机器在内部网络中的 ip。 @AndreasHultgren 好的,谢谢你.. 相关:***.com/questions/6458083/… 【参考方案1】:

试试这个,这对我有用。

Var client = require('socket.io').listen(8080).sockets;

client.on('connection',function(socket) 
var clientIpAddress= socket.request.socket.remoteAddress;
);

【讨论】:

socket.request.socket.remoteAddress 行返回 websocket IP 地址而不是用户的 IP。我不确定我在这里做错了什么。我的代码和你的一样

以上是关于如何使用 socket.io 获取用户的 IP 地址?的主要内容,如果未能解决你的问题,请参考以下文章

如何在socket io中获取ip

如何将客户端的正确 IP 地址获取到 Heroku 上托管的 Node socket.io 应用程序中?

如何在 Node.js 中从请求参数获取经过身份验证的用户到 socket.io

如何使用 Express、AngularJS、Socket.io 广播和获取通知?

计算水平服务器上的 socket.io 用户

socket.io如何进行分布式部署