2
cohttpクライアントは、(wiresharkに基づいて)表示されますが、GET要求への応答を受け取った後に自動的に接続を閉じます。
この接続を有効に保つ(永続化する)方法はありますか?
永続接続を作成する他のHTTPライブラリがない場合は、cohttpライブラリ(またはその他のもの)を使用した持続的なHTTP接続
cohttpクライアントは、(wiresharkに基づいて)表示されますが、GET要求への応答を受け取った後に自動的に接続を閉じます。
この接続を有効に保つ(永続化する)方法はありますか?
永続接続を作成する他のHTTPライブラリがない場合は、cohttpライブラリ(またはその他のもの)を使用した持続的なHTTP接続
githubのコードを見ると、そのようなオプションがないように見えます。私はこれを正しく読んでいた場合
let read_response ~closefn ic oc meth =
...
match has_body with
| `Yes | `Unknown ->
let reader = Response.make_body_reader res ic in
let stream = Body.create_stream Response.read_body_chunk reader in
let closefn = closefn in
Lwt_stream.on_terminate stream closefn;
let gcfn st = closefn() in
Gc.finalise gcfn stream;
let body = Body.of_stream stream in
return (res, body)
接続は、すぐにGCがストリームをクリーンアップして終了します:read_response
がある
let call ?(ctx=default_ctx) ?headers ?(body=`Empty) ?chunked meth uri =
...
Net.connect_uri ~ctx uri >>= fun (conn, ic, oc) ->
let closefn() = Net.close ic oc in
...
read_response ~closefn ic oc meth
。