Closed7

node.js v16 で QuicTransport 試してみようと思ったら消えてた話

https://blog.leko.jp/post/http-over-quic-on-nodejs15/

https://scrapbox.io/nwtgck/Node.jsのQUICを先取りして使ってみよう

ほうほう。 node.js v15 で QuicTransport が実験的実装されている。ビルド時にフラグを入れないと使えないので、公式の Dockerfile などは使えないから自分でビルドして使えとね。

https://github.com/nodejs/node/blob/master/BUILDING.md#unix-prerequisites

このあたり参考にして Dockerfile 作ってみるかー。

$ docker run --rm -it debian:buster sh
# apt update
# apt install -y python3 g++ make wget python3-distutils
# cd /tmp
# wget https://nodejs.org/dist/v16.1.0/node-v16.1.0.tar.gz
# tar zxf node-v16.1.0.tar.gz
# cd node-v16.1.0
# ./configure --experimental-quic
Node.js configure: Found Python 3.7.3...
gyp: --experimental-quic not found (cwd: /tmp/node-v16.1.0) while trying to load --experimental-quic
Error running GYP

あんれーおかしいな。フラグがないといわれる。

https://github.com/nodejs/node/blob/7657f62b1810b94acbe7db68089b608213b34749/doc/api/quic.md

Quic のドキュメントもあったみたいなんだけど、 v16.1.0 では消えてるなあ。どこで消えたんだろ?

https://github.com/nodejs/node/compare/v15.7.0...v15.8.0

どうやら v15.8.0 で消えた様子だ。 PR は... https://github.com/nodejs/node/pull/37067

なるほど、 OpenSSL にパッチあてて頑張って実装してみたけど、 OpenSSL サイドがちゃんと node.js QUIC のための実装をしてくれるか先行き不透明なので LTS に入れてメンテしていくのは難しくなった。なので一旦実装を削除しました、とのこと。代わりにユーザーランド(=js 実装)で OpenSSL バインディングに依存しない実装を模索してみる、という話になったらしい。

やはり OpenSSL が壁になるんやなってハナシ。実装膨らみすぎてメンテ無限に大変そうだ。

https://github.com/quictls/openssl

これは Microsoft と Akamai の fork QUIC 対応版。 OpenSSL あたりが良い感じに 3.1 で QUIC を実装してくれるまでの一時的な繋ぎ実装だそう。

https://github.com/aiortc/aioquic

現状だとこの Python ライブラリが一番サーバサイドとして使いやすそうな雰囲気。サンプルコードもちょいちょいある。

https://github.com/spiral/roadrunner/issues/326

PHP で HTTP/2 や gRPC をハンドリング出来る RoadRunner は特にまだ何もしていない様子。 close はされてないから、「Draft 抜けて標準化されたら実装するよー」というステータスに見える。

蛇足:初めてスクラップ使ってみたけど、良好。

  1. 実際に手を動かした時系列でデータが並んでいく
  2. 気軽にコメントを追加出来る

記事にするほどの量がない軽度の調査系をこうやってしたためるのが合ってそう。

このスクラップは2021/05/07にクローズされました
ログインするとコメントできます