为什么 remoteAddress 被隐藏了?

Why is remoteAddress hidden?

我正在使用 Node.js 和 https://github.com/websockets/ws

我正在尝试将用户 remoteAddress 存储在临时套接字变量中。我可以通过以下方式访问此变量: socket.upgradeReq.connection.remoteAddress

问题是,remoteAddress 到底从哪里来的?甚至在 lib 目录中的任何 WS node_plugin 文件中都找不到变量 'remoteAddress'。 (我用 Notepad++ 搜索了每个文件。)

我找到访问这个变量的唯一原因是来自这个主题:How to get client IP address using websocket (einaros / ws) lib in node.js?

哎呀,即使在我的控制台中显示 console.log(self.upgradeReq.connection); 我仍然找不到它!

对象控制台列表图片:

在世界的哪个地方?我错过了什么吗?

它来自 Node.js 的内置 net 模块。以下是如何追踪它:

ws documentationupgradeReq 称为 "The HTTP request that initiated the upgrade"。浏览 ws 代码可以清楚地看到它使用 Node.js 的内置 http 库来处理 HTTP 请求。

Node.js http request documentation 表示 http.ClientRequest.connection 是对给定请求的基础 TCP socket 的引用。

Node.js 的 TCP 代码在 net 库中。 net docs 文档 socket.remoteAddress.