【发布时间】:2015-10-20 00:46:25
【问题描述】:
我想这是以前有人问过并回答过的问题,但我不知道要搜索什么才能找到它。在我看来,这是作为大学计算机网络课程的一部分学习的东西——我从未学过的东西。如果有人能指出我的答案,那就太好了。
所以,问题是:
在许多语言中,例如 Go 和 JavaScript,通过 http/https 向 API 发出“GET”请求相对简单。但是在相对高级的描述中,表面之下发生了什么?
我之所以这么问,是因为我需要更好地了解如何处理我收到的各种错误,当事情没有按应有的方式运行时。
对于我要寻求的答案类型的想法,我将参考 Golang 进行 http 调用的方法。在 Golang 中,您可以导入 net/http 包并像 http.Get("http://www.example.com") 一样进行调用。但是您也可以指定一个“客户端”,您可以将其配置为具有特定自定义标头等内容。您可以在客户端内部指定一些更复杂的内容,例如使用的传输,以及更多我不感兴趣的内容除非它解决了我的问题。
基本上,归结为:Go 是完全并发的,在我的例子中是并行的。我每秒向一个 API 发出大约 300 个请求。 golang docs 的建议是客户端可以安全地并发使用,因此应该只实例化一次 - 本质上,我有一个全局客户端,每个请求都流经它。
如果我收到一个错误说连接已被终止,这是否会影响一个请求,许多请求,我是否必须对客户端做任何事情才能获得另一个连接?
另外,是每个连接一次一个请求,还是每个请求都建立一个新连接?请求之间的连接是否持久,是什么决定了它们何时死亡?
这个问题可能很漫无边际,可能没有意义。如果有人能回答它的任何部分,那将不胜感激。
【问题讨论】:
-
您似乎只是在问“http 是如何工作的”? go 客户端处理 http/1.1(和 go1.6 中的 http/2)。如果您了解该协议,那么客户端所做的事情就会随之而来。这里不提供有关 http 的详细信息的教程。如果您想就如何使用客户端进行讨论,邮件列表是一个更好的论坛,但您应该在这里提出具体问题。
标签: http go https network-programming connection