Node.js 通过NodeJS express仅获取IPv4 IP

Node.js 通过NodeJS express仅获取IPv4 IP,node.js,express,centos,ipv6,ipv4,Node.js,Express,Centos,Ipv6,Ipv4,我在Centos上运行NodeJSexpress服务,监听GET请求,我需要识别用户的IP 目前,我正在使用这个脚本 ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress || req.socket.remoteAddress || req.connection.socket.remoteAddress 问题是,有时返回的IP是IPv4,有时是IPv6。有没有办法只获取IPv4

我在
Centos
上运行
NodeJS
express
服务,监听GET请求,我需要识别用户的IP

目前,我正在使用这个脚本

ip = req.headers['x-forwarded-for'] ||
      req.connection.remoteAddress ||
      req.socket.remoteAddress ||
      req.connection.socket.remoteAddress

问题是,有时返回的IP是IPv4,有时是IPv6。有没有办法只获取IPv4 IP?

更新

根据Micheal的评论,如果客户端通过ipv6连接,将不会有ipv4地址,所以您必须准备好接受ipv6

在服务器上侦听时指定ipv4请参见


文档似乎解释了一种不同的行为:“如果省略主机名,服务器将在IPv6可用时接受任何IPv6地址(::)上的连接,或者接受任何IPv4地址(0.0.0.0)上的连接。省略端口参数,或者使用端口值0,让操作系统分配一个随机端口,可以使用server.address检索该端口()。发出“侦听”事件后的端口。“在这个答案中添加@michael hamptons注释可能会很有用。对我来说,这并不明显。如果用户通过IPv6连接,将根本没有IPv4地址。您的代码必须能够处理IPv6地址。这是一个非常有用的注释,我使用@feiiiii的解决方案,但仍然可以在IPv6表单中看到一些用户IP。
.listen(port, '0.0.0.0');