README.md in http-2-0.12.0 vs README.md in http-2-1.0.0

- old
+ new

@@ -1,18 +1,19 @@ # HTTP-2 [![Gem Version](https://badge.fury.io/rb/http-2.svg)](http://rubygems.org/gems/http-2) -[![Coverage Status](https://coveralls.io/repos/igrigorik/http-2/badge.svg)](https://coveralls.io/r/igrigorik/http-2) +[![Build status](https://github.com/igrigorik/http-2/actions/workflows/ci.yml/badge.svg)](https://github.com/igrigorik/http-2) Pure Ruby, framework and transport agnostic, implementation of HTTP/2 protocol and HPACK header compression with support for: + * [Binary framing](https://hpbn.co/http2/#binary-framing-layer) parsing and encoding * [Stream multiplexing](https://hpbn.co/http2/#streams-messages-and-frames) and [prioritization](https://hpbn.co/http2/#stream-prioritization) * Connection and stream [flow control](https://hpbn.co/http2/#flow-control) * [Header compression](https://hpbn.co/http2/#header-compression) and [server push](https://hpbn.co/http2/#server-push) * Connection and stream management -* And more... see [API docs](http://www.rubydoc.info/github/igrigorik/http-2/frames) +* And more... see [API docs](https://www.rubydoc.info/gems/http-2) Protocol specifications: * [Hypertext Transfer Protocol Version 2 (RFC 7540)](https://httpwg.github.io/specs/rfc7540.html) * [HPACK: Header Compression for HTTP/2 (RFC 7541)](https://httpwg.github.io/specs/rfc7541.html) @@ -28,26 +29,27 @@ Your code is responsible for feeding data into the parser, which performs all of the necessary HTTP/2 decoding, state management and the rest, and vice versa, the parser will emit bytes (encoded HTTP/2 frames) that you can then route to the destination. Roughly, this works as follows: ```ruby require 'http/2' + socket = YourTransport.new conn = HTTP2::Client.new conn.on(:frame) {|bytes| socket << bytes } while bytes = socket.read conn << bytes end ``` -Checkout provided [client](https://github.com/igrigorik/http-2/blob/master/example/client.rb) and [server](https://github.com/igrigorik/http-2/blob/master/example/server.rb) implementations for basic examples. +Checkout provided [client](example/client.rb) and [server](example/server.rb) implementations for basic examples. ### Connection lifecycle management -Depending on the role of the endpoint you must initialize either a [Client](http://www.rubydoc.info/github/igrigorik/http-2/HTTP2/Client) or a [Server](http://www.rubydoc.info/github/igrigorik/http-2/HTTP2/Server) object. Doing so picks the appropriate header compression / decompression algorithms and stream management logic. From there, you can subscribe to connection level events, or invoke appropriate APIs to allocate new streams and manage the lifecycle. For example: +Depending on the role of the endpoint you must initialize either a [Client](lib/http/2/client.rb) or a [Server](lib/http/2/server.rb) object. Doing so picks the appropriate header compression / decompression algorithms and stream management logic. From there, you can subscribe to connection level events, or invoke appropriate APIs to allocate new streams and manage the lifecycle. For example: ```ruby # - Server --------------- server = HTTP2::Server.new @@ -146,11 +148,11 @@ stream.data(last_chunk) end end ``` -Events emitted by the [Stream object](http://www.rubydoc.info/github/igrigorik/http-2/HTTP2/Stream): +Events emitted by the [Stream object](lib/http/2/stream.rb): <table> <tr> <td><b>:reserved</b></td> <td>fires exactly once when a push stream is initialized</td> @@ -250,11 +252,11 @@ }) # split response between multiple DATA frames stream.data(response_chunk, end_stream: false) stream.data(last_chunk) - + # now send the previously promised data push_stream.data(push_data) end end ``` @@ -281,6 +283,7 @@ rake ``` ### License -(MIT License) - Copyright (c) 2013 Ilya Grigorik ![GA](https://www.google-analytics.com/__utm.gif?utmac=UA-71196-9&utmhn=github.com&utmdt=HTTP2&utmp=/http-2/readme) +(MIT License) - Copyright (c) 2013-2019 Ilya Grigorik ![GA](https://www.google-analytics.com/__utm.gif?utmac=UA-71196-9&utmhn=github.com&utmdt=HTTP2&utmp=/http-2/readme) +(MIT License) - Copyright (c) 2019 Tiago Cardoso ![GA](https://www.google-analytics.com/__utm.gif?utmac=UA-71196-9&utmhn=github.com&utmdt=HTTP2&utmp=/http-2/readme)