【问题标题】:Is an http.Agent employed in a nodejs web server which only serves requests?是否在仅服务请求的 nodejs Web 服务器中使用了 http.Agent?
【发布时间】:2017-02-02 05:13:25
【问题描述】:

创建一个新的 http.Agent 似乎对 Web 服务器很有用,因为我可以控制要分配的套接字数量、是否将未使用的套接字保持在池中(keepAlive 标志)等等...

话虽如此,我认为没有办法将自定义代理传递到新服务器的创建中。我需要编辑http.globalAgent吗?

在 v7.3.0 nodejs 文档中它说:

http.request()使用的默认http.globalAgent...

这也让我想知道在发出http.request 时它是如何工作的。例如,它正在调用的服务器(任何服务器)是否会认识到它应该只分配 x 个套接字,为什么客户端首先要确定这些事情?

【问题讨论】:

    标签: node.js sockets http


    【解决方案1】:

    你需要read the documentation:

    http.request(options[, callback])

    • options[对象]

      •••

      • agent [http.Agent] | [布尔] 控制代理行为。可能的值:
        • undefined(默认):使用 http.globalAgent 作为主机和端口。
        • Agent 对象:显式使用传入的 Agent。
        • false:导致使用具有默认值的新代理。
      • createConnection [Function] 在不使用代理选项时生成用于请求的套接字/流的函数。这可用于避免创建自定义代理类只是为了覆盖默认的 createConnection 函数。有关详细信息,请参阅agent.createConnection()
      • timeout [Integer]:一个数字,以毫秒为单位指定套接字超时。这将在套接字连接之前设置超时。
    • callback【功能】

    返回:

    就您的其他问题而言:将套接字视为连接两台计算机的 a 管道。如果您只打开一个套接字,则一次只能发出一个请求;如果您打开了 n 个套接字,则可以n 个请求并行

    【讨论】:

    猜你喜欢
    • 2018-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多