diff options
author | Loïc Hoguin <[email protected]> | 2016-04-30 14:58:32 +0200 |
---|---|---|
committer | Loïc Hoguin <[email protected]> | 2016-04-30 14:58:32 +0200 |
commit | 25912dfc05e45e0f4453f689410fce80a1af69ab (patch) | |
tree | 755e76bf24752c4b9e212531f6fafdfd3e114346 /examples/ssl_hello_world | |
parent | ff936ff0ee62731d54ec35335355f76577044443 (diff) | |
download | cowboy-25912dfc05e45e0f4453f689410fce80a1af69ab.tar.gz cowboy-25912dfc05e45e0f4453f689410fce80a1af69ab.tar.bz2 cowboy-25912dfc05e45e0f4453f689410fce80a1af69ab.zip |
Fix ssl_hello_world example; document HTTP/2 output
Diffstat (limited to 'examples/ssl_hello_world')
-rw-r--r-- | examples/ssl_hello_world/Makefile | 1 | ||||
-rw-r--r-- | examples/ssl_hello_world/README.asciidoc | 62 | ||||
-rw-r--r-- | examples/ssl_hello_world/src/ssl_hello_world_app.erl | 2 | ||||
-rw-r--r-- | examples/ssl_hello_world/src/toppage_handler.erl | 8 |
4 files changed, 66 insertions, 7 deletions
diff --git a/examples/ssl_hello_world/Makefile b/examples/ssl_hello_world/Makefile index 34c3201..47676a9 100644 --- a/examples/ssl_hello_world/Makefile +++ b/examples/ssl_hello_world/Makefile @@ -3,6 +3,7 @@ PROJECT_DESCRIPTION = Cowboy SSL Hello World example PROJECT_VERSION = 1 DEPS = cowboy +LOCAL_DEPS = ssl dep_cowboy_commit = master include ../../erlang.mk diff --git a/examples/ssl_hello_world/README.asciidoc b/examples/ssl_hello_world/README.asciidoc index d3fcf77..70ee7f8 100644 --- a/examples/ssl_hello_world/README.asciidoc +++ b/examples/ssl_hello_world/README.asciidoc @@ -1,4 +1,4 @@ -= Hello world example += Secure hello world example To try this example, you need GNU `make` and `git` in your PATH. @@ -12,7 +12,10 @@ Then point your browser to https://localhost:8443 You will need to temporarily trust the root certificate authority, which can also be found in `priv/ssl/cowboy-ca.crt`. -== Example output +Recent browsers will communicate using HTTP/2. Older browsers +will use HTTP/1.1. + +== HTTP/1.1 example output [source,bash] ---- @@ -25,3 +28,58 @@ content-length: 12 Hello world! ---- + +== HTTP/2 example output + +[source,bash] +---- +$ nghttp -v https://localhost:8443 +[ 0.001] Connected +The negotiated protocol: h2 +[ 0.009] recv SETTINGS frame <length=0, flags=0x00, stream_id=0> + (niv=0) +[ 0.009] 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.009] send SETTINGS frame <length=0, flags=0x01, stream_id=0> + ; ACK + (niv=0) +[ 0.009] send PRIORITY frame <length=5, flags=0x00, stream_id=3> + (dep_stream_id=0, weight=201, exclusive=0) +[ 0.009] send PRIORITY frame <length=5, flags=0x00, stream_id=5> + (dep_stream_id=0, weight=101, exclusive=0) +[ 0.009] send PRIORITY frame <length=5, flags=0x00, stream_id=7> + (dep_stream_id=0, weight=1, exclusive=0) +[ 0.009] send PRIORITY frame <length=5, flags=0x00, stream_id=9> + (dep_stream_id=7, weight=1, exclusive=0) +[ 0.009] send PRIORITY frame <length=5, flags=0x00, stream_id=11> + (dep_stream_id=3, weight=1, exclusive=0) +[ 0.009] 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: https + :authority: localhost:8443 + accept: */* + accept-encoding: gzip, deflate + user-agent: nghttp2/1.7.1 +[ 0.010] recv 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) content-length: 12 +[ 0.010] recv (stream_id=13) content-type: text/plain +[ 0.010] recv (stream_id=13) date: Sat, 30 Apr 2016 12:54:32 GMT +[ 0.010] recv (stream_id=13) server: Cowboy +[ 0.010] recv HEADERS frame <length=45, flags=0x04, stream_id=13> + ; END_HEADERS + (padlen=0) + ; First response header +Hello world![ 0.010] recv DATA frame <length=12, flags=0x01, stream_id=13> + ; END_STREAM +[ 0.010] send GOAWAY frame <length=8, flags=0x00, stream_id=0> + (last_stream_id=0, error_code=NO_ERROR(0x00), opaque_data(0)=[]) +---- diff --git a/examples/ssl_hello_world/src/ssl_hello_world_app.erl b/examples/ssl_hello_world/src/ssl_hello_world_app.erl index 0338baf..ba42b24 100644 --- a/examples/ssl_hello_world/src/ssl_hello_world_app.erl +++ b/examples/ssl_hello_world/src/ssl_hello_world_app.erl @@ -22,7 +22,7 @@ start(_Type, _Args) -> {cacertfile, PrivDir ++ "/ssl/cowboy-ca.crt"}, {certfile, PrivDir ++ "/ssl/server.crt"}, {keyfile, PrivDir ++ "/ssl/server.key"} - ], #{env, [{dispatch, Dispatch}]}), + ], #{env => #{dispatch => Dispatch}}), ssl_hello_world_sup:start_link(). stop(_State) -> diff --git a/examples/ssl_hello_world/src/toppage_handler.erl b/examples/ssl_hello_world/src/toppage_handler.erl index e8e672e..eb95bf3 100644 --- a/examples/ssl_hello_world/src/toppage_handler.erl +++ b/examples/ssl_hello_world/src/toppage_handler.erl @@ -6,7 +6,7 @@ -export([init/2]). init(Req, Opts) -> - Req2 = cowboy_req:reply(200, [ - {<<"content-type">>, <<"text/plain">>} - ], <<"Hello world!">>, Req), - {ok, Req2, Opts}. + cowboy_req:reply(200, #{ + <<"content-type">> => <<"text/plain">> + }, <<"Hello world!">>, Req), + {ok, Req, Opts}. |