|
|
- eWSrv
- =====
-
- An erlang web server
-
- Build
- -----
-
- $ rebar3 compile
-
- ## Usage
-
- ```sh
- $ rebar3 shell
- ```
-
- ```erlang
- %% starting elli
- 1 > {ok, Pid} = elli:start_link([{callback, elli_example_callback}, {port, 3000}]).
- ```
-
- ## Examples
-
- ### Callback Module
-
- The best source to learn how to write a callback module
- is [src/elli_example_callback.erl](src/elli_example_callback.erl) and
- its [generated documentation](doc/elli_example_callback.md). There are a bunch of examples used in the tests as well as
- descriptions of all the events.
-
- A minimal callback module could look like this:
-
- ```erlang
- -module(elli_minimal_callback).
- -export([handle/2, handle_event/3]).
-
- -include_lib("elli/include/eWSrv.hrl").
- -behaviour(wsHer).
-
- handle(Req, _Args) ->
- %% Delegate to our handler function
- handle(Req#req.method, wsReq:path(Req), Req).
-
- handle('GET', [<<"hello">>, <<"world">>], _Req) ->
- %% Reply with a normal response. `ok' can be used instead of `200'
- %% to signal success.
- {ok, [], <<"Hello World!">>};
-
- handle(_, _, _Req) ->
- {404, [], <<"Not Found">>}.
-
- %% @doc Handle request events, like request completed, exception
- %% thrown, client timeout, etc. Must return `ok'.
- handle_event(_Event, _Data, _Args) ->
- ok.
- ```
-
- ### Supervisor Childspec
-
- To add `elli` to a supervisor you can use the following example and adapt it to your needs.
-
- ```erlang
- -module(fancyapi_sup).
- -behaviour(supervisor).
- -export([start_link/0]).
- -export([init/1]).
-
- start_link() ->
- supervisor:start_link({local, ?MODULE}, ?MODULE, []).
-
- init([]) ->
- ElliOpts = [{callback, fancyapi_callback}, {port, 3000}],
- ElliSpec = {
- fancy_http,
- {elli, start_link, [ElliOpts]},
- permanent,
- 5000,
- worker,
- [elli]},
-
- {ok, {{one_for_one, 5, 10}, [ElliSpec]}}.
- ```
-
- ## Further Reading
-
- For more information about the features and design philosophy of `elli` check out the [overview](doc/README.md).
|