Express アプリがあり、受信したリクエストごとにドメインを使用しています。ミドルウェアを追加して、それ以上のミドルウェアがドメインの「内部」で実行されるようにしました。
app.use(function(req, res, next) {
var d = domain.create();
d.req = req;
d.add(req);
d.add(res);
d.run(next);
});
また、リクエストの処理中に実行される一部のコードは、最初のリクエストへの参照を取得するために使用されます。これはヘッダー、Cookie などです。このコードに直接process.domain.req
渡すことはできません。req
この奇妙なコードは、実行場所がわからないクロス環境コード (ブラウザ用とノード用) の一種です。内部的には、一部のベース レイヤーは Node とブラウザー (特にネットワーク コード) で異なる方法で実装されています。request
ブラウザーの場合は XMLHttpRequest であり、NodeJS の場合はlibに基づくカスタム ラッパーです。
メモリリークが心配です。これreq
は、ドメインに保存されていることを参照しています。彼らはこれを保持して、ガベージコレクションを行わないようにすることはできますか?
また、定期的にドメインを破棄する必要がありますか? または、いくつかのエッジ/エラー ケースでドメインを破棄する必要がありますか?