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
使っている。