Skip to content

Very lightweight HTTP server using Lwt or Async

License

Notifications You must be signed in to change notification settings

talex5/ocaml-cohttp

 
 

Repository files navigation

CoHTTP is an OCaml library for creating HTTP daemons. It has a portable HTTP parser, and implementations using various asynchronous programming libraries:

  • Cohttp_lwt_unix uses the Lwt library, and specifically the UNIX bindings.
  • Cohttp_async uses the Async library.
  • Cohttp_lwt exposes an OS-independent Lwt interface, which is used by the the Mirage interface to generate standalone microkernels (see the mirage-http repository).
  • Cohttp_lwt_xhr compiles to a JavaScript module that maps the Cohttp calls to XMLHTTPRequests. This is used to compile OCaml libraries like the GitHub bindings to JavaScript and still run efficiently.

You can implement other targets using the parser very easily. Look at the lib/IO.mli signature and implement that in the desired backend.

You can activate some runtime debugging by setting COHTTP_DEBUG to any value, and all requests and responses will be written to stderr. Further debugging of the connection layer can be obtained by setting CONDUIT_DEBUG to any value.

For build requirements, please see the _oasis file, or use OPAM to install it from http://github.com/ocaml/opam.

Simple HTTP server

If you install the Async dependency, then a cohttp-server-async binary will also be built and installed that acts in a similar fashion to the Python SimpleHTTPServer. Just run cohttp-server-async in a directory and it will open up a local port and serve the files over HTTP.

There is also an Lwt version of the SimpleHTTPServer installed as the cohttp-server-lwt binary. The source code for both is in the bin/ subdirectory and is a good starting point for how to write servers using the library.

About

Very lightweight HTTP server using Lwt or Async

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • OCaml 97.3%
  • JavaScript 2.1%
  • Shell 0.6%