peppapighs / http2-client

HTTP/2 Client using Coroutines

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

http2-client

HTTP/2 Client using Coroutines. This project is for my personal exploration of performing asynchronous I/O using C++20-style coroutines.

Build

Install the following dependencies:

  • C++20 compiler
  • CMake 3.12.0+
  • Boost 1.81.0+
  • OpenSSL
  • nghttp2

or use the following command to install dependencies using Conda:

conda env create -f environment.yml

Build the project:

./make.sh

Run

build/http2-client -h
build/http2-client -L "https://nghttp2.org" -m "GET" -v

Notes

Set environment variable SSLKEYLOGFILE to path of a file to TLS master secrets logging. This is useful for debugging TLS connections using Wireshark.

References

  • nghttp2: HTTP/2 C Library and tools
  • nghttp2-asio: A C++ asio-based HTTP/2 client/server library (original inspiration for this project)
  • Boost.Asio: Boost Asynchronous I/O library

About

HTTP/2 Client using Coroutines

License:MIT License


Languages

Language:C++ 97.2%Language:CMake 2.5%Language:Shell 0.3%