Node.jsのundici.request()のkeep aliveを無効化する
やりたいこと
undiciから送られるリクエストはフォルトでkeep aliveが有効になる。 headersにconnection: closeを指定すると「InvalidArgumentError: invalid connection header」でエラーする。
(発端は、単体テストでundiciを利用した時にundiciに変更した部分だけ遅くなる挙動がありkeep aliveが原因だと分かったこと。) やりかた
以下のようにdispatcher: new undici.Agent({pipelining: 0})を指定するとconnection: closeヘッダがリクエストされてkeep aliveを無効化できた。
code:js
const undici = require("undici");
(async () => {
dispatcher: new undici.Agent({pipelining: 0}),
});
})();
以下のドキュメントでpipelining: 0を指定するとkeep aliveを無効にできると書いてあるところから。
Set to 0 to disable keep-alive connections.
実際のリクエスト
code:console
$ nc -lp 8181
GET / HTTP/1.1
host: localhost:8181
connection: close