Cohttp_eio.Server
include Cohttp.Generic.Server.S
with module IO = Cohttp_eio__.Io.IO
and type body = Body.t
and type response = writer -> unit
module IO : sig ... end
type body = Body.t
type conn = IO.conn * Cohttp.Connection.t
type response = writer -> unit
type response_action = [
| `Expert of Http.Response.t * (IO.ic -> IO.oc -> unit IO.t)
| `Response of response
]
A request handler can respond in two ways:
`Response
, with a Response.t
and a body
.`Expert
, with a Response.t
and an IO function that is expected to write the response body. The IO function has access to the underlying IO.ic
and IO.oc
, which allows writing a response body more efficiently, stream a response or to switch protocols entirely (e.g. websockets). Processing of pipelined requests continue after the unit IO.t
is resolved. The connection can be closed by closing the IO.ic
.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 respond_string :
?headers:Http.Header.t ->
status:Http.Status.t ->
body:string ->
unit ->
response IO.t
val respond :
?headers:Http.Header.t ->
status:Http.Status.t ->
body:_ Eio.Flow.source ->
unit ->
response IO.t
val run :
?max_connections:int ->
?additional_domains:(_ Eio__Domain_manager.t * int) ->
?stop:'a Eio.Promise.t ->
on_error:(exn -> unit) ->
_ Eio.Net.listening_socket ->
t ->
'a