据我所知,在 HTTP 1.1 中,您可以对多个请求使用相同的 TCP/IP 连接,但在该连接上一次不能执行多个请求。换句话说,它必须像:请求,响应,请求,响应,请求,...。你不能做这样的事情:Req1,Req2,Resp1,Req3,Resp3,Resp2。也许你可以使用 HTTP/2,我不知道。
无论如何,我的问题是:如果您尝试使用 FlurlClient 发送多个同时请求会发生什么?
喜欢:
using (var client = new FlurlClient("https://api.com"))
{
var req1Task = client.Request("path1").PostJsonAsync(thing);
var req2Task = client.Request("path2").GetAsync();
await Task.WhenAll(req1Task, req2Task);
// Do something with responses.
}
我知道 HttpClient 的答案。
答案是,如果您在请求已经挂起时尝试在 HttpClient 上启动另一个请求,HttpClient 将创建一个新的 TCP/IP 连接。而如果您一直等到第一个请求完成,HttpClient 会为第二个请求重用连接。
我的猜测是 FlurlClient 是一样的。