Connection pooling: the second request skips the handshake.
Connection pooling: the second request skips the handshake.
#include <asio.hpp>
#include <chrono>
#include <iostream>
using Clock = std::chrono::steady_clock;
const auto ms_since = [](Clock::time_point start) {
return std::chrono::duration_cast<std::chrono::milliseconds>(Clock::now() -
start)
.count();
};
auto t = Clock::now();
co_await http.
async_get(
"https://postman-echo.com/get", asio::use_awaitable);
std::cout << "first request: " << ms_since(t) << " ms"
<< " (DNS + TCP + TLS + HTTP)\n";
t = Clock::now();
co_await http.
async_get(
"https://postman-echo.com/get", asio::use_awaitable);
std::cout << "second request: " << ms_since(t) << " ms"
<< " (pooled connection, HTTP only)\n";
}
int main() {
asio::io_context io;
asio::co_spawn(io, twice(http), asio::detached);
io.run();
}
auto async_get(std::string url, CompletionToken &&token)
Definition cofetch.h:324