%%%------------------------------------------------------------------- %% @doc efka public API %% @end %%%------------------------------------------------------------------- -module(efka_app). -behaviour(application). -export([start/2, stop/1]). start(_StartType, _StartArgs) -> io:setopts([{encoding, unicode}]), %% 加速内存的回收 erlang:system_flag(fullsweep_after, 16), start_ws_server(), efka_sup:start_link(). stop(_State) -> ok. start_ws_server() -> {ok, Props} = application:get_env(efka, ws_server), Acceptors = proplists:get_value(acceptors, Props, 50), MaxConnections = proplists:get_value(max_connections, Props, 10240), Backlog = proplists:get_value(backlog, Props, 1024), Port = proplists:get_value(port, Props), Dispatcher = cowboy_router:compile([ {'_', [{"/ws", ws_channel, []}]} ]), TransOpts = [ {port, Port}, {num_acceptors, Acceptors}, {backlog, Backlog}, {max_connections, MaxConnections} ], {ok, Pid} = cowboy:start_clear(ws_listener, TransOpts, #{env => #{dispatch => Dispatcher}}), lager:debug("[efka_app] websocket server start at: ~p, pid is: ~p", [Port, Pid]).