如何获取Node.js中的WebSocket(websockets / ws)库的客户端IP地址?

我找不到客户端对象上的客户端IP参数。

在弄清楚哪一个客户端(networking浏览器)的IP地址有点麻烦之后,答案是:

ws._socket.remoteAddress 

或者,如果您有通过wss.on('connection', (ws, req) => {})访问req

 req.connection.remoteAddress; 

例如,您可以使用GeoIP查找用户所连接的位置。

编辑:

如果您在Nginx反向代理(或任何其他反向代理)背后运行Node,则可能需要使用:

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

有关安全性的说明:如果您的节点服务器可以直接使用,也可以通过反向代理服务器使用,则可能希望在信任x-forwarded-for之前检查remoteAddress 远程地址应该是您的反向代理的IP。 有人很可能直接打电话给你的服务,并欺骗x-forwarded-for

从打印套接字对象中的键中得到这个结果:

 > ws._socket.address() { port: 8081, family: 2, address: '127.0.0.1' } > ws._socket.remoteAddress '74.125.224.194' > ws._socket.remotePort 41435 

我没有任何文档,所以我不确定在不同的版本中支持多好。/