【问题标题】:Ruby HTTPClient: How to use persistent connections?Ruby HTTPClient:如何使用持久连接?
【发布时间】:2013-04-12 16:47:08
【问题描述】:

如何通过 HTTPClient 使用持久的 HTTP 连接?发送 HTTP 请求时是否只是设置 Keep Alive 的问题?文档说明支持持久连接,但没有告诉我们如何使用它们。

【问题讨论】:

  • 如果服务器使用 HTTP/1.1,我猜它默认使用持久连接,因为这是the spec (RFC 2616) 的一部分。你不相信吗?

标签: ruby http httpclient


【解决方案1】:

我是available in Net::HTTP

如文档中所写,

Net::HTTP.start 立即创建与 HTTP 服务器的连接,该服务器在块期间保持打开状态。如果服务器指示它支持持久连接,则该连接将对块中的多个请求保持打开状态。

这意味着您将在块中执行的所有请求都将使用相同的 HTTP 连接。

文档中的示例

require 'net/http'

uri = URI('http://google.com/')

Net::HTTP.start(uri.host, uri.port) do |http|
  request = Net::HTTP::Get.new uri.request_uri

  response = http.request request # Net::HTTPResponse object
end

【讨论】:

    【解决方案2】:

    如HttpClientReadme中所述:

    您不必关心 HTTP/1.1 持久连接 (httpclient 关心而不是你)

    这通常意味着在服务器支持HTTP 1.1 持久连接的情况下,httpclient gem 将存储并重新使用它们(连接)用于后续请求。在这种情况下,您不必担心。

    【讨论】:

    • 谢谢,我想我会批准这个作为答案......这可能是一个愚蠢的问题,但如果我重用 httpclient 实例,httpclient 只会重用连接吗?
    • @HenleyChiu 我想是的,是的。
    • 我认为这是一个糟糕的答案,特别是因为如果您必须重用 httpclient 实例,那么您确实需要担心它。
    猜你喜欢
    • 1970-01-01
    • 2011-04-08
    • 2012-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-13
    • 1970-01-01
    相关资源
    最近更新 更多