首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在socket.io中获取客户端的IP地址

在socket.io中获取客户端的IP地址
EN

Stack Overflow用户
提问于 2011-06-24 01:22:05
回答 15查看 159.6K关注 0票数 140

在Node.js服务器中使用socket.IO时,有没有一种简单的方法可以获取传入连接的IP地址?我知道你可以从一个标准的超文本传输协议连接中获得它,但是socket.io有点不同。

EN

回答 15

Stack Overflow用户

回答已采纳

发布于 2011-07-19 05:00:29

好的,从0.7.7开始,这是可用的,但不是以lubar描述的方式。我最终需要在git集线器上解析一些提交日志来解决这个问题,但下面的代码现在确实对我有效:

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);
});
票数 167
EN

Stack Overflow用户

发布于 2014-06-06 07:08:15

对于1.0.4:

io.sockets.on('connection', function (socket) {
  var socketId = socket.id;
  var clientIp = socket.request.connection.remoteAddress;

  console.log(clientIp);
});
票数 77
EN

Stack Overflow用户

发布于 2016-05-27 11:12:07

如果您使用其他服务器作为反向代理,则所有提到的字段都将包含localhost。最简单的解决方法是在代理服务器中添加ip/端口的标头。

nginx的例子:在你的proxy_pass后面添加这个

proxy_set_header  X-Real-IP $remote_addr;
proxy_set_header  X-Real-Port $remote_port;

这将使标头在socket.io节点服务器中可用:

var ip = socket.handshake.headers["x-real-ip"];
var port = socket.handshake.headers["x-real-port"];

请注意,标头在内部转换为小写。

如果要将节点服务器直接连接到客户端,

var ip = socket.conn.remoteAddress;

适用于我的socket.io版本1.4.6。

票数 54
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6458083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档