【问题标题】:Why is remoteAddress hidden?为什么remoteAddress隐藏?
【发布时间】:2023-03-23 06:45:01
【问题描述】:

我正在使用带有https://github.com/websockets/ws 的 Node.js。

我正在尝试将用户 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);,我仍然找不到它!

对象控制台列表的图像:

世界上的什么地方?我错过了什么吗?

【问题讨论】:

  • 请不要使用图片,如果是代码,直接作为代码块放在问题中即可。
  • 好吧,我认为控制台中的所有代码都会向页面发送垃圾邮件:P
  • 如果你想让人们为你的问题烦恼,它需要可读。 meta.stackoverflow.com/questions/285551/…
  • 因为它是连接的一部分,它可能由net 或WS 使用的任何东西定义...
  • 我认为这是一个有用的问题,即使问题的格式不同。内联图像可以工作(@NiCkNewman)。

标签: javascript node.js websocket


【解决方案1】:

它来自 Node.js 的内置 net 模块。以下是跟踪它的方法:

ws documentationupgradeReq 称为“启动升级的 HTTP 请求”。浏览ws 代码可以清楚地看出它使用Node.js 的内置http 库来处理HTTP 请求。

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

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

【讨论】:

  • 刚刚恢复了我的电子邮件并看到了这篇文章,非常感谢。标记为最佳。好的,我现在明白了,我想我在阅读他们的文档时错过了这一点。
猜你喜欢
  • 2014-08-28
  • 2016-04-29
  • 2010-10-23
  • 1970-01-01
  • 2016-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多