⛳
【PHP】AMPHP の Http2Parser の調査
AMPHP の HTTP/2 フレームを解析する機能をほかのフレームワークで使えないか調べてみた。AMPHP の HTTP パッケージ (amphp/http) には HTTP/2 フレームを解析するクラスである Http2Parser
が含まれる。Http2Parser のコンストラクターには Hpack
と Http2Processor
インターフェイスを継承するハンドラーを指定する必要がある。
Http2Processor
には HTTP/2 フレームごとの処理を担う handleXXXX
という形式のメソッドが定義される。
Http2Parser
の parse
メソッドは与えられたデータに対してフレームの種類ごとに専用の処理メソッド(parseXXXX
)に移譲する。それらのメソッドを通してハンドラーの handleXXXX
メソッドが実行される。parse
の戻り値は Generator
である。
Http2Processor
を継承するハンドラークラスの例は amphp/http-client では Http2ConnectionProcessor
、amphp/http-server では Http2Driver
である。
それぞれのハンドラークラスは Revolt\EventLoop を使用する一方で、リクエスト・レスポンスはそれぞれ独自のものを使用する。前者は Amp\Http\Client\Request, Response、後者は Amp\Http\Server\Request, Response である。
Http2ConnectionProcessor よりも Http2Driver のほうが実装のコード量が多い。
Discussion