non vorrei lavorare

ブログ名の通りです。javascript three.js mruby rust OCaml golang julialang blender

HTTP2でexpressを動かす

こんばんは、息子たちと奥さんが海外出張の為、実家に来ています。近所に住んでいる長男と同い年の従兄弟と三人で今回も元気に過ごしています。

背景

abrakatabura.hatenablog.com

の記事にあるように、mruby-webcamで、大量に顔検出した息子たちデータがあり、mrubyで登録したbytea型の 画像データが意図した通り、PostgreSQLに登録されているかの確認も込めて、mruby以外の処理系での確認ということで、 node.js+expressでタイル表示させた。

そこで、大量のhttpアクセスにはHTTP/2.0が向いていることを思い出した。

node-spdyモジュールを知る

長いこと、node-http2モジュールしか知らなかったが、

github.com

のスレッドで、node-spdyがspdy以外にhttp2も扱えることを知った。 しかも、作者はnode-ffiでも以前、神対応されてる方なので、期待が高まる。

expressをnode-spdyで使う

オレオレ証明書

証明書買えないし、Let’s encrypt使えそうな環境身近にないから、以下でオレオレ証明書を作る。node-http2trusterdh2oと違い、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);

関連記事

11年前の記事

7年前の記事

5年前の記事

4年前の記事