如何使用 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 地址?的主要内容,如果未能解决你的问题,请参考以下文章
如何将客户端的正确 IP 地址获取到 Heroku 上托管的 Node socket.io 应用程序中?
如何在 Node.js 中从请求参数获取经过身份验证的用户到 socket.io