mirror of
https://github.com/ninenines/cowboy.git
synced 2025-07-15 20:50:24 +00:00

Has some stuff that aren't in master yet, and lacks a lot more that is already in master.
39 lines
1.1 KiB
Markdown
39 lines
1.1 KiB
Markdown
Handlers
|
|
========
|
|
|
|
Purpose
|
|
-------
|
|
|
|
Handlers are Erlang modules that represent a resource.
|
|
|
|
Handlers must process the request and send a reply. The nature of the
|
|
reply will vary between handlers.
|
|
|
|
Different kinds of handlers can be combined in a single module. This
|
|
allows a module to handle both websocket and long-polling code in a
|
|
single place, for example.
|
|
|
|
Protocol upgrades
|
|
-----------------
|
|
|
|
Cowboy features many different handlers: HTTP handlers, loop handlers,
|
|
websocket handlers, REST handlers and static handlers. All of them
|
|
have a common entry point: the `init/3` function.
|
|
|
|
By default, Cowboy considers your handler to be an HTTP handler.
|
|
|
|
To switch to a different protocol, like, for example, Websocket,
|
|
you must perform a protocol upgrade. This is done by returning
|
|
a protocol upgrade tuple at the end of `init/3`.
|
|
|
|
The following snippet upgrades the handler to `my_protocol`.
|
|
|
|
``` erlang
|
|
init(_Any, _Req, _Opts) ->
|
|
{upgrade, protocol, my_protocol}.
|
|
```
|
|
|
|
The `my_protocol` module will be used for further processing of the
|
|
request. It requires only one callback, `upgrade/4`.
|
|
|
|
@todo Describe `upgrade/4` when the middleware code gets pushed.
|