【问题标题】:.listen method parameters in NodeJSNodeJS 中的 .listen 方法参数
【发布时间】:2015-10-15 21:26:10
【问题描述】:

NodeJS noob 签入。我正在查看 .listen 方法的文档,该方法具有以下形式:

server.listen(port[, hostname][, backlog][, callback])

以及端口/主机名的解释说明:

开始接受指定端口和主机名上的连接。如果 省略主机名,服务器将接受定向到的连接 任何 IPv4 地址

我不完全理解“如果省略主机名,服务器将接受定向到任何 IPv4 地址的连接”部分。服务器如何接受到任何 IP 地址的连接?是服务器将接受什么而不是它可以接受什么让我觉得奇怪吗?

【问题讨论】:

  • 顺便说一句,主机名可以省略,端口不可以,见here

标签: node.js


【解决方案1】:

问题是当您当前运行服务器的主机具有多个 IP 地址(多个网卡或一个网卡的多个 IP 地址)时。见multihoming

因此,该语句意味着如果未提供主机名,则任何到达此特定主机的传入连接都将被接受,而不管该连接的目标 IP 地址是什么。

【讨论】:

  • 如果我们谈论的是 nodeJS http 服务器,是否有任何请求被视为连接?假设我从某个应用程序(在这种情况下为 chrome 扩展)向这个 nodeJS 应用程序发出了 http 请求,我怎么知道要指定什么主机名?
  • @pqx994 - 此上下文中的“连接”是任何传入的 TCP 连接。每一个传入的http请求都是这样一个连接。
  • 抱歉,编辑了原始评论并添加了一些内容。我想知道如果您从外部应用程序(如 chrome 扩展程序)发出 http 请求,您如何知道要指定的主机名?在这种情况下,主机名通常留空吗?
  • @pqx994 - 此上下文中的主机名是您服务器的主机名。该参数与连接“来自”的位置无关。通常的情况是省略主机名,这很可能是您应该做的。它可能用于更复杂的部署(考虑同一主机上的多个 Web 服务器)。
  • 谢谢,感谢您的解释
猜你喜欢
  • 2018-06-22
  • 1970-01-01
  • 2011-07-03
  • 2021-09-10
  • 1970-01-01
  • 2016-03-01
  • 1970-01-01
  • 2010-09-12
相关资源
最近更新 更多