Latest commit 6f7b598 Jun 7, 2017 2 @essen essen Remove NumAcceptors argument from start_clear/tls
They are now cowboy:start_clear/3 and cowboy:start_tls/3.
The NumAcceptors argument can be specified via the
num_acceptor transport option. Ranch has been updated
to 1.4.0 to that effect.

README.asciidoc

Chunked hello world example

To try this example, you need GNU make and git in your PATH.

To build and run the example, use the following command:

$ make run

Then point your browser to http://localhost:8080 or use curl to see the chunks arriving one at a time every second.

HTTP/1.1 example output

$ time curl -i http://localhost:8080
HTTP/1.1 200 OK
transfer-encoding: chunked
connection: keep-alive
server: Cowboy
date: Fri, 28 Sep 2012 04:24:16 GMT

Hello
World
Chunked!
curl -i http://localhost:8080  0.01s user 0.00s system 0% cpu 2.015 total

HTTP/2 example output

$ nghttp -v http://localhost:8080
[  0.000] Connected
[  0.000] send SETTINGS frame <length=12, flags=0x00, stream_id=0>
          (niv=2)
          [SETTINGS_MAX_CONCURRENT_STREAMS(0x03):100]
          [SETTINGS_INITIAL_WINDOW_SIZE(0x04):65535]
[  0.000] send PRIORITY frame <length=5, flags=0x00, stream_id=3>
          (dep_stream_id=0, weight=201, exclusive=0)
[  0.000] send PRIORITY frame <length=5, flags=0x00, stream_id=5>
          (dep_stream_id=0, weight=101, exclusive=0)
[  0.000] send PRIORITY frame <length=5, flags=0x00, stream_id=7>
          (dep_stream_id=0, weight=1, exclusive=0)
[  0.000] send PRIORITY frame <length=5, flags=0x00, stream_id=9>
          (dep_stream_id=7, weight=1, exclusive=0)
[  0.000] send PRIORITY frame <length=5, flags=0x00, stream_id=11>
          (dep_stream_id=3, weight=1, exclusive=0)
[  0.000] send HEADERS frame <length=38, flags=0x25, stream_id=13>
          ; END_STREAM | END_HEADERS | PRIORITY
          (padlen=0, dep_stream_id=11, weight=16, exclusive=0)
          ; Open new stream
          :method: GET
          :path: /
          :scheme: http
          :authority: localhost:8080
          accept: */*
          accept-encoding: gzip, deflate
          user-agent: nghttp2/1.7.1
[  0.006] recv SETTINGS frame <length=0, flags=0x00, stream_id=0>
          (niv=0)
[  0.006] recv SETTINGS frame <length=0, flags=0x01, stream_id=0>
          ; ACK
          (niv=0)
[  0.006] send SETTINGS frame <length=0, flags=0x01, stream_id=0>
          ; ACK
          (niv=0)
[  0.010] recv (stream_id=13) :status: 200
[  0.010] recv (stream_id=13) date: Mon, 13 Jun 2016 14:16:26 GMT
[  0.010] recv (stream_id=13) server: Cowboy
[  0.010] recv HEADERS frame <length=32, flags=0x04, stream_id=13>
          ; END_HEADERS
          (padlen=0)
          ; First response header
Hello
[  0.010] recv DATA frame <length=7, flags=0x00, stream_id=13>
World
[  1.012] recv DATA frame <length=7, flags=0x00, stream_id=13>
Chunked!
[  2.013] recv DATA frame <length=10, flags=0x00, stream_id=13>
[  2.013] recv DATA frame <length=0, flags=0x01, stream_id=13>
          ; END_STREAM
[  2.013] send GOAWAY frame <length=8, flags=0x00, stream_id=0>
          (last_stream_id=0, error_code=NO_ERROR(0x00), opaque_data(0)=[])