Chr*_*let 46
在试图找出哪一个给客户端(网络浏览器的)IP地址有点麻烦之后,答案是:
ws._socket.remoteAddress
Run Code Online (Sandbox Code Playgroud)
或者,如果您有权访问reqvia wss.on('connection', (ws, req) => {}):
req.connection.remoteAddress;
Run Code Online (Sandbox Code Playgroud)
例如,您可以使用它来GeoIP定位用户连接的位置.
编辑:
如果您在Nginx反向代理(或任何其他反向代理)后面运行Node,您可能需要使用:
req.headers['x-forwarded-for'] || req.connection.remoteAddress
Run Code Online (Sandbox Code Playgroud)
关于安全性的说明:如果您的节点服务器可以直接使用,也可以通过反向代理服务器,您可能希望remoteAddress在信任之前检查x-forwarded-for.远程地址应该是您的反向代理的IP.有人可以直接打电话给你的服务和恶搞x-forwarded-for.
小智 22
通过打印套接字对象中的键得到这个:
> ws._socket.address()
{ port: 8081,
family: 2,
address: '127.0.0.1' }
> ws._socket.remoteAddress
'74.125.224.194'
> ws._socket.remotePort
41435
Run Code Online (Sandbox Code Playgroud)
我没有任何文档,所以我不确定版本的支持程度如何:/
小智 6
在 websocket 服务器中,由于req.connection已弃用,因此您可以使用req.socket.
wss.on('connection', (ws, req) => {
console.log(req.socket.remoteAddress);
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
38165 次 |
| 最近记录: |