alr
alr

Reputation: 1452

persistent HTTP connection using cohttp library (or other)

It seems (based on wireshark), cohttp client closes its connection automatically after response to GET request was received.
Is there a way to keep this connection alive (to make it persistent)?
If no is there any other HTTP library to create persistent connections?

Upvotes: 2

Views: 132

Answers (1)

user6307701
user6307701

Reputation:

Looking at the code at github it doesn't look like there is such an option.

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

Where read_response is:

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)

If I am reading this correctly the connection will close as soon as the GC cleans up the stream.

Upvotes: 2

Related Questions