mirror of
https://github.com/ninenines/cowboy.git
synced 2025-07-16 13:10:24 +00:00
Wrap-up the user guide
This commit is contained in:
parent
642630fea1
commit
fd3c40c7ee
11 changed files with 291 additions and 209 deletions
37
guide/upgrade_protocol.md
Normal file
37
guide/upgrade_protocol.md
Normal file
|
@ -0,0 +1,37 @@
|
|||
Protocol upgrades
|
||||
=================
|
||||
|
||||
Cowboy features many different handlers, each for different purposes.
|
||||
All handlers have a common entry point: the `init/3` function.
|
||||
|
||||
The default handler type is the simple HTTP handler.
|
||||
|
||||
To switch to a different protocol, you must perform a protocol
|
||||
upgrade. This is what is done for Websocket and REST and is
|
||||
explained in details in the respective chapters.
|
||||
|
||||
You can also create your own protocol on top of Cowboy and use
|
||||
the protocol upgrade mechanism to switch to it.
|
||||
|
||||
For example, if you create the `my_protocol` module implementing
|
||||
the `cowboy_sub_protocol` behavior, then you can upgrade to it
|
||||
by simply returning the module name from `init/3`.
|
||||
|
||||
``` erlang
|
||||
init(_, _, _Opts) ->
|
||||
{upgrade, protocol, my_protocol}.
|
||||
```
|
||||
|
||||
The `cowboy_sub_protocol` behavior only requires one callback,
|
||||
`upgrade/4`. It receives the Req object, the middleware environment,
|
||||
and the handler and options for this request. This is the same
|
||||
module as the `init/3` function and the same options that were
|
||||
passed to it.
|
||||
|
||||
``` erlang
|
||||
upgrade(Req, Env, Handler, HandlerOpts) ->
|
||||
%% ...
|
||||
```
|
||||
|
||||
This callback is expected to behave like a middleware. Please
|
||||
see the corresponding chapter for more information.
|
Loading…
Add table
Add a link
Reference in a new issue