0
Fork 0
mirror of https://github.com/ninenines/cowboy.git synced 2025-07-14 04:10:24 +00:00
Small, fast, modern HTTP server for Erlang/OTP.
Find a file
Loïc Hoguin 8cb9d242b0
Initial HTTP/3 implementation
This includes Websocket over HTTP/3.

Since quicer, which provides the QUIC implementation,
is a NIF, Cowboy cannot depend directly on it. In order
to enable QUIC and HTTP/3, users have to set the
COWBOY_QUICER environment variable:

  export COWBOY_QUICER=1

In order to run the test suites, the same must be done
for Gun:

  export GUN_QUICER=1

HTTP/3 support is currently not available on Windows
due to compilation issues of quicer which have yet to
be looked at or resolved.

HTTP/3 support is also unavailable on the upcoming
OTP-27 due to compilation errors in quicer dependencies.
Once resolved HTTP/3 should work on OTP-27.

Because of how QUIC currently works, it's possible
that streams that get reset after sending a response
do not receive that response. The test suite was
modified to accomodate for that. A future extension
to QUIC will allow us to gracefully reset streams.

This also updates Erlang.mk.
2024-03-26 15:53:48 +01:00
.github/workflows Initial HTTP/3 implementation 2024-03-26 15:53:48 +01:00
doc/src Cowboy 2.12.0 2024-03-14 15:06:07 +01:00
ebin Initial HTTP/3 implementation 2024-03-26 15:53:48 +01:00
examples Update ssl_hello_world example certificate 2024-01-26 15:38:40 +01:00
src Initial HTTP/3 implementation 2024-03-26 15:53:48 +01:00
test Initial HTTP/3 implementation 2024-03-26 15:53:48 +01:00
.gitattributes Convert the documentation to Asciidoc 2016-01-14 13:37:20 +01:00
.gitignore gitignore: add examples/ dependency files 2016-05-25 12:54:12 +02:00
CONTRIBUTING.asciidoc Document how to run all test suites 2018-11-20 13:28:48 +01:00
erlang.mk Initial HTTP/3 implementation 2024-03-26 15:53:48 +01:00
LICENSE Refresh copyright lines 2024-01-25 11:22:54 +01:00
Makefile Initial HTTP/3 implementation 2024-03-26 15:53:48 +01:00
plugins.mk Document the commands based Websocket interface 2019-10-06 16:51:27 +02:00
README.asciidoc Cowboy 2.12.0 2024-03-14 15:06:07 +01:00
rebar.config Initial HTTP/3 implementation 2024-03-26 15:53:48 +01:00

= Cowboy

Cowboy is a small, fast and modern HTTP server for Erlang/OTP.

== Goals

Cowboy aims to provide a *complete* HTTP stack in a *small* code base.
It is optimized for *low latency* and *low memory usage*, in part
because it uses *binary strings*.

Cowboy provides *routing* capabilities, selectively dispatching requests
to handlers written in Erlang.

Because it uses Ranch for managing connections, Cowboy can easily be
*embedded* in any other application.

Cowboy is *clean* and *well tested* Erlang code.

== Online documentation

* https://ninenines.eu/docs/en/cowboy/2.12/guide[User guide]
* https://ninenines.eu/docs/en/cowboy/2.12/manual[Function reference]

== Offline documentation

* While still online, run `make docs`
* User guide available in `doc/` in PDF and HTML formats
* Function reference man pages available in `doc/man3/` and `doc/man7/`
* Run `make install-docs` to install man pages on your system
* Full documentation in Asciidoc available in `doc/src/`
* Examples available in `examples/`

== Getting help

* https://github.com/ninenines/cowboy/issues[Issues tracker]
* https://ninenines.eu/services[Commercial Support]
* https://github.com/sponsors/essen[Sponsor me!]