# meta/proxygen

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/meta-proxygen).**

_How this analysis was created: the description and tags below were written by an AI model that read this project's README and public documentation pages; stars, license and language come straight from the GitHub API. The model does not read the source code._

8,379 stars · 1,530 forks · C++ · NOASSERTION

## Links

- GitHub: https://github.com/meta/proxygen
- awesome-repositories: https://awesome-repositories.com/repository/meta-proxygen.md

## Description

Proxygen is a collection of C++ HTTP libraries for building both servers and clients. Applications are written against shared request, response, session, and transaction abstractions. A server creates a handler for each incoming request through a factory, and each request and response pair is carried by its own transaction, so application code does not manage low-level sessions or sockets directly. The same interfaces are used for issuing and answering requests.

A single application can serve HTTP/1.1, SPDY/3, SPDY/3.1, HTTP/2, and HTTP/3 through one common set of abstractions, with a pluggable codec converting wire bytes into request and response objects. HTTP/3 runs over an IETF QUIC transport layer. The project includes a command-line tool that acts as an HTTP/3 server or client, and it can record QUIC connection events in the qlog format.

The library also serves as a toolkit for assembling forward and reverse proxies. Bundled sample programs include an echo server, a static file server, a forward proxy, a curl-like client, and an HTTP/2 server push example. On the build side, CMake find modules locate optional dependencies such as Zstandard and Google Mock, and an exported package configuration lets downstream projects import the installed library.

## Tags

### Networking & Communication

- [HTTP Servers](https://awesome-repositories.com/f/networking-communication/http-clients/http-servers.md) — Provides C++ libraries for building HTTP servers that accept incoming requests and handle each with custom handler logic. ([source](https://github.com/meta/proxygen/tree/main/proxygen))
- [C++ HTTP Server Libraries](https://awesome-repositories.com/f/networking-communication/http-clients/http-servers/c-http-server-libraries.md) — Provides a C++ HTTP server library that creates a request handler per incoming request and hides low-level session management. ([source](https://github.com/meta/proxygen#readme))
- [HTTP/3 Implementations](https://awesome-repositories.com/f/networking-communication/http-3-implementations.md) — Implements an HTTP/3 stack over IETF QUIC with a command-line server and client tool and qlog connection logging. ([source](https://github.com/meta/proxygen#readme))
- [HTTP Client Integrations](https://awesome-repositories.com/f/networking-communication/http-client-integrations.md) — Lets applications send HTTP requests to remote servers and process the responses using the same handler and transaction interfaces. ([source](https://github.com/meta/proxygen/tree/main/proxygen))
- [Multi-Protocol HTTP Support](https://awesome-repositories.com/f/networking-communication/multi-protocol-http-support.md) — Handles HTTP/1.1, SPDY, HTTP/2, and HTTP/3 through shared abstractions so applications avoid per-version code.
- [QUIC Implementations](https://awesome-repositories.com/f/networking-communication/network-transport-protocols/quic-implementations.md) — Runs HTTP/3 on an IETF QUIC transport layer that sits beneath the common HTTP abstractions.
- [Codec-Based Message Framing](https://awesome-repositories.com/f/networking-communication/codec-based-message-framing.md) — Uses a pluggable codec to turn raw wire bytes into common request and response objects, so one application serves several HTTP versions.
- [HTTP Client Interfaces](https://awesome-repositories.com/f/networking-communication/http-client-interfaces.md) — Offers client-side interfaces for sending HTTP requests and processing responses using the same handler and transaction model as servers.
- [HTTP Client Libraries](https://awesome-repositories.com/f/networking-communication/http-client-libraries.md) — Provides a C++ library for writing HTTP clients that send requests and process responses via handler and transaction interfaces.
- [HTTP Message Serialization](https://awesome-repositories.com/f/networking-communication/http-message-serialization.md) — Converts wire bytes into request and response objects and serializes outgoing messages back into protocol-correct bytes through a pluggable codec. ([source](https://github.com/meta/proxygen#readme))
- [HTTP Proxies](https://awesome-repositories.com/f/networking-communication/http-proxies.md) — Supplies libraries and samples for assembling forward and reverse HTTP proxies that relay requests between clients and destination servers.
- [HTTP Request Abstractions](https://awesome-repositories.com/f/networking-communication/http-request-abstractions.md) — Parses wire bytes with a codec, maps each request and response pair to a transaction, and passes it to a business-logic handler. ([source](https://github.com/meta/proxygen/blob/main/README.md))
- [HTTP Proxy Forwarders](https://awesome-repositories.com/f/networking-communication/traffic-tunneling/http-tunneled-socks-proxies/http-proxy-forwarders.md) — Acts as a toolkit for assembling forward and reverse proxies that relay HTTP requests between clients and servers. ([source](https://github.com/meta/proxygen/tree/main/proxygen))

### Web Development

- [HTTP Request and Response Handlers](https://awesome-repositories.com/f/web-development/http-request-and-response-handlers.md) — Builds a request handler for each incoming HTTP request through a factory so applications send responses without managing low-level sessions. ([source](https://github.com/meta/proxygen/blob/main/README.md))
- [Multi-Protocol HTTP Serving](https://awesome-repositories.com/f/web-development/multi-protocol-http-serving.md) — Serves HTTP/1.1, SPDY, HTTP/2, and HTTP/3 from a single application through shared request and response abstractions. ([source](https://github.com/meta/proxygen#readme))
- [Handler Dispatchers](https://awesome-repositories.com/f/web-development/routing-systems/routing/matching-algorithms/regex-based-url-dispatchers/handler-dispatchers.md) — Creates a fresh user-defined handler for every incoming request through a factory, keeping application code separate from sessions and sockets.

### System Administration & Monitoring

- [Event-Driven I/O](https://awesome-repositories.com/f/system-administration-monitoring/administrative-operations/linux-system-administration/networking/connection-lifecycle-management/parallel-network-i-o/event-driven-i-o.md) — Drives connections with a non-blocking event loop that reacts to socket readiness instead of dedicating a thread to each connection.
