【问题标题】:Can I listen to website url host? Node JS我可以收听网站 url 主机吗?节点JS
【发布时间】:2017-05-20 04:01:01
【问题描述】:

我无法理解一件事——NodeJS 是否允许监听自定义主机名?不是本地主机。因为当我收听我的网站 url (example.com) 时,我收到以下错误:

错误:监听 EADDRNOTAVAIL example.com ip-address:1000 at Object.exports._errnoException (util.js:1022:11) 在 Export._exceptionWithHostPort (util.js:1045:20) 在 Server._listen2 (net.js:1246:19) 在听 (net.js:1295:10) 在 net.js:1405:9 在 _combinedTickCallback (internal/process/next_tick.js:77:11) at process._tickCallback (internal/process/next_tick.js:98:9) at Module.runMain (module.js:606:11) 在运行 (bootstrap_node.js:394:7) 在 启动(bootstrap_node.js:149:9)

为什么会这样?我可以收听来自外部站点 URL 的 POST 消息吗?

【问题讨论】:

  • 如果 example.com 解析为您正在运行此服务器的机器的 IP,那么您应该能够在 example.com 上收听。请检查您的情况下example.com 解析为哪个地址。
  • 不是。 example.com 的 Ip 和我的机器的 Ip 不同。所以没有办法从我的本地机器上收听 example.com?
  • 那么没有。您只能收听您机器上的地址(或指向地址的域名)。
  • 本地测试只需要这个?

标签: node.js http url server


【解决方案1】:

为什么会这样?

发生这种情况是因为您请求的 hostnameport 对您不可用。

我可以监听来自外部站点 URL 的 POST 消息吗?

不,你不能。 server.listen() 接受 hostnameport

开始接受指定端口和主机名上的连接。如果省略主机名,当 IPv6 可用时,服务器将接受任何 IPv6 地址 (::) 上的连接,否则接受任何 IPv4 地址 (0.0.0.0)。省略端口参数,或使用端口值 0,让操作系统分配一个随机端口,可以在发出“监听”事件后使用 server.address().port 检索该端口。

进一步挖掘list of Node.js Common System Errors docsexhaustive list,很明显,Address not available就是这种情况。

EADDRNOTAVAIL 地址不可用 (POSIX.1)。

【讨论】:

    猜你喜欢
    • 2023-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-26
    • 2020-06-21
    • 1970-01-01
    • 2011-04-26
    • 1970-01-01
    相关资源
    最近更新 更多