package cohttp-lwt-unix

  1. Overview
  2. Docs

The Server module implements the full UNIX HTTP server interface, including the UNIX-specific functions defined in S.

The Logs source name for this module logger is "cohttp.lwt.server". Refer to the Debug module for further details.

include Cohttp_lwt.S.Server with module IO = Cohttp_lwt_unix__.Io
module IO : sig ... end
type body = Cohttp_lwt__.Body.t
type conn = IO.conn * Cohttp__.Connection.t
type response_action = [
  1. | `Expert of Http.Response.t * (IO.ic -> IO.oc -> unit IO.t)
  2. | `Response of Http.Response.t * body
]
type t
val make_response_action : ?conn_closed:(conn -> unit) -> callback:(conn -> Http.Request.t -> body -> response_action IO.t) -> unit -> t
val make_expert : ?conn_closed:(conn -> unit) -> callback: (conn -> Http.Request.t -> body -> (Http.Response.t * (IO.ic -> IO.oc -> unit IO.t)) IO.t) -> unit -> t
val make : ?conn_closed:(conn -> unit) -> callback:(conn -> Http.Request.t -> body -> (Http.Response.t * body) IO.t) -> unit -> t
val respond : ?headers:Http.Header.t -> ?flush:bool -> status:Http.Status.t -> body:body -> unit -> (Http.Response.t * body) IO.t
val respond_string : ?headers:Http.Header.t -> ?flush:bool -> status:Http.Status.t -> body:string -> unit -> (Http.Response.t * body) IO.t
val callback : t -> IO.conn -> IO.ic -> IO.oc -> unit IO.t
val resolve_local_file : docroot:string -> uri:Uri.t -> string
  • deprecated Please use Cohttp.Path.resolve_local_file.
val respond_error : ?headers:Http.Header.t -> ?status:Http.Status.t -> body:string -> unit -> (Http.Response.t * body) IO.t
val respond_redirect : ?headers:Http.Header.t -> uri:Uri.t -> unit -> (Http.Response.t * body) IO.t
val respond_need_auth : ?headers:Http.Header.t -> auth:Cohttp.Auth.challenge -> unit -> (Http.Response.t * body) IO.t
val respond_not_found : ?uri:Uri.t -> unit -> (Http.Response.t * body) IO.t
val resolve_file : docroot:string -> uri:Uri.t -> string
  • deprecated Please use Cohttp.Path.resolve_local_file.
val respond_file : ?headers:Http.Header.t -> fname:string -> unit -> (Http.Response.t * Cohttp_lwt.Body.t) Lwt.t
val create : ?timeout:int -> ?backlog:int -> ?stop:unit Lwt.t -> ?on_exn:(exn -> unit) -> ?ctx:Net.ctx -> ?mode:Conduit_lwt_unix.server -> t -> unit Lwt.t

create ?timeout ?backlog ?stop ?on_exn ?mode t is a new HTTP server.

The user can decide to start a simple HTTP server (without encryption) or one with TLS encryption. It depends on what the user gives as mode and how conduit-unix is configured.

To create a simple HTTP server listening on port 8089:

let run = create (`TCP 8080)

When provided, the stop thread will terminate the server if it ever becomes determined.

When provided, backlog will limit the number of open connections.

Every connection will be served in a new lightweight thread that is invoked via the callback defined in t. If the callback raises an exception, it is passed to on_exn (by default, to a function that logs the exception using the Logs library).

OCaml

Innovation. Community. Security.