A pure Ruby, transport-agnostic implementation of HTTP/2 protocol and HPACK header compression.
HTTP-2 is a pure Ruby library that implements the HTTP/2 protocol and HPACK header compression. It provides a complete, transport-agnostic foundation for building HTTP/2 clients and servers, handling binary framing, stream multiplexing, flow control, and server push without imposing any specific networking stack.
Ruby developers building custom HTTP/2 clients, servers, or proxies who need low-level protocol control and flexibility in transport mechanisms.
Developers choose HTTP-2 for its pure Ruby implementation, full protocol compliance, and transport agnosticism, allowing integration into any Ruby environment or custom event loop without external dependencies.
Pure Ruby implementation of HTTP/2 protocol
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Has no external dependencies and runs anywhere Ruby is supported, making it highly portable for diverse environments, as emphasized in the README.
Implements all core HTTP/2 features per RFCs 7540 and 7541, including binary framing, multiplexing, flow control, and server push, providing a solid foundation for compliant applications.
Works with any data delivery mechanism, from TCP sockets to custom event loops or even 'avian carriers,' giving developers full control over the transport layer without library constraints.
Offers precise stream lifecycle events (:active, :headers, :data, etc.), enabling custom handling of requests and responses without abstraction layers, as detailed in the stream management section.
Requires manual handling of all transport logic, including data feeding, socket management, and error handling, which adds significant complexity compared to integrated solutions.
Provides no built-in conveniences for common tasks like making HTTP requests or serving static files, forcing developers to build these on top of the low-level API.
Does not include SSL/TLS support for secure connections; users must implement this separately, adding overhead for production deployments.