HTTP2でexpressを動かす
こんばんは、息子たちと奥さんが海外出張の為、実家に来ています。近所に住んでいる長男と同い年の従兄弟と三人で今回も元気に過ごしています。@kjunichiです。
背景
の記事にあるように、mruby-webcamで、大量に顔検出した息子たちデータがあり、mrubyで登録したbytea型の 画像データが意図した通り、PostgreSQLに登録されているかの確認も込めて、mruby以外の処理系での確認ということで、 node.js+expressでタイル表示させた。
そこで、大量のhttpアクセスにはHTTP/2.0が向いていることを思い出した。
node-spdyモジュールを知る
長いこと、node-http2モジュールしか知らなかったが、
のスレッドで、node-spdyがspdy以外にhttp2も扱えることを知った。 しかも、作者はnode-ffiでも以前、神対応されてる方なので、期待が高まる。
expressをnode-spdyで使う
オレオレ証明書
証明書買えないし、Let's encrypt使えそうな環境身近にないから、以下でオレオレ証明書を作る。node-http2やtrusterdやh2oと違い、node-spdyはca.pemなる ファイルも必要だった。
以下の様にして、用意できた。
mkdir keys cd keys openssl genrsa -des3 -out spdy-key.pem 2048 openssl req -new -key spdy-key.pem -out spdy-ca.pem openssl x509 -days 365 -req -signkey spdy-key.pem < spdy-ca.pem >spdy-cert.pem openssl rsa -in spdy-key.pem -out spdy-key.pem cd ..
expressのコード
express-generatorで生成したコードの場合、bin/wwwを以下の様に編集して、対応出来た。
const spdy = require('spdy'); const fs = require('fs'); const options = { key: fs.readFileSync(__dirname + '/../keys/spdy-key.pem'), cert: fs.readFileSync(__dirname + '/../keys/spdy-cert.pem'), ca: fs.readFileSync(__dirname + '/../keys/spdy-ca.pem') }; const server = spdy.createServer(options, app);
関連記事
- io.jsでmruby実装のhttp2サーバーのtrusterdを動かした
- http2 ハッカソン #5に行ってきた
- libtrusterdでHTTP/2でphpを動かして分かったこと
- libtrusterdでHTTP/2でphpを動かして分かったことのその後 #知見
- JulialangにHTTP2サーバーをさせたら
- ElectronはHTTP2が喋れないのか?
- mrubyのHTTP2サーバー(trusterd)をRack APIに対応させる その1
- mrubyのHTTP2サーバー(trusterd)をRack APIに対応させる その2
- mrubyのHTTP2サーバーでWebGLでGopherを出そうとした