Кажется (на основе wirehark), клиент cohttp закрывает свое соединение автоматически после получения ответа на запрос GET.
Есть ли способ сохранить это соединение в живых (чтобы сделать его постоянным)?
Если нет какой-либо другой библиотеки HTTP для создания постоянных соединений?Постоянное HTTP-соединение с использованием библиотеки cohttp (или другого)
2
A
ответ
2
Просмотрев код github, похоже, что такой вариант отсутствует.
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
read_response
Где находится:
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 очищает поток.