Piping Server本体のHTTP/2サポート
#Piping_Server #HTTP/2 #Node.js
このPRで、HTTP/2がサポートされた。
HTTPSを使うとHTTP/2を使うことができるようになった。
HTTP/2対応のメリット:Piping ServerがHTTP/2対応で得られそうなメリットたち
今までのリバースプロキシでのHTTP/2対応
Piping ServerをリバースプロキシでHTTP/2に対応させるでリバースプロキシで以前からHTTP/2対応できた。今回は本体が対応した。ただし、non-TLS(HTTP)のときはHTTP/2が使われない。これはNode.jsの仕様(Node.jsのhttp2.createServer()がHTTP/1のリクエストを受け付けない仕様のテストコードの場所)。
上記のリバースプロキシ方法ならHTTP (non-TLS)でもHTTP/2が使える。そのためリバースプロキシ経由を利用するメリットもある。
ここでテストされている:
対応法に関して
「思考: DefinitelyTypedで、http.createServer()とhttp2.createServer()のハンドラーの型が合わなくて考えていること」で考えていたように、確かにハンドラーの型が合わなかった。共通化するためのインターフェースなども考えた。考えてみると、もっとダイレクトに実装可能だった。http.IncomingMessage | http2.Http2ServerRequestやhttp.ServerResponse | http2.Http2ServerResponseなどのUnion Typeを使えばよかった。自動で共通項のメソッドなどが使える。res.end(chunk: any)の部分で型エラーなどしたりした。それはchunkは現在の型定義だとanyを期待しているので、見た目に良くないがas anyで対処した。multipartyなどのライブラリで、http.IncomingMessageを期待してるところは部分はしょうがなくas any使っている。