すでに 2 ヶ月も経過してますが、http2 ハッカソン #3 に参加しました。
僕は初心者枠で参加したのですが、初心者向けに HTTP/2 最速実装の解説発表がありました。
HTTP/2 最速実装とは、複雑な機能を省略してできるだけ簡単に HTTP/2 っぽいものを実装するというものです。
参加した時に途中まで書いて放置していたのですが、今回 HTTP/2 Conference に向けて一応動くようにしてみました。
HTTP/2 最速実装について
基本的には @syu_cream さんの資料を参照すると良いと思います。
あとはドラフト。日本語訳もあります。
一応簡単に言葉で説明すると、
- プロトコルネゴシエーションは相手が HTTP/2 が喋れること前提にサボる
- SETTINGS FRAME での設定はしない、全部読み飛ばす
- HPACK での HEADER 圧縮は Literal Header Field without Indexing を利用(ハフマン符号化、インデキシングを行わない)
という感じでめんどくさいところは全部省略してるって感じですw
自分の実装について
Go の HTTP/2 実装は @Jxck_ さんの実装がすでにあるのですが、自分が Go を書きたかったので今回は Go で書きました。
一応 GitHub にあげてあります。
突貫で書いてとりあえず動くようにしたという感じで、コードカオスなのでもう触りたくない感じですが…
今回最速実装をやってみて HTTP/2 がどんな感じのものか少し理解が深まった気がします。
みなさんも HTTP/2 最速実装、ぜひ挑戦してみてはいかがでしょうか :)
次は Jxck さんの実装読みながら HPACK の実装でもやってみようとおもいます :D