diff --git a/player/player.html b/player/player.html index 183312b4..a6e9b112 100644 --- a/player/player.html +++ b/player/player.html @@ -22,6 +22,16 @@ {% endfor %} + + + + Online: + + diff --git a/src/ems_fsm.erl b/src/ems_fsm.erl index 2e46883f..394034af 100644 --- a/src/ems_fsm.erl +++ b/src/ems_fsm.erl @@ -191,6 +191,9 @@ init([]) -> {next_state, 'WAIT_FOR_DATA', State, ?TIMEOUT}; Reply -> Reply end. + +'WAIT_FOR_DATA'({info}, _From, #ems_fsm{addr = Address} = State) -> + {reply, [{ip, Address}], 'WAIT_FOR_DATA', State, ?TIMEOUT}; 'WAIT_FOR_DATA'(Data, _From, State) -> diff --git a/src/ems_http.erl b/src/ems_http.erl index 1dc8d59e..27bee45a 100644 --- a/src/ems_http.erl +++ b/src/ems_http.erl @@ -26,10 +26,12 @@ handle('GET', [], Req) -> false -> "video.mp4" end, {ok, FileList} = file:list_dir(ems_play:file_dir()), + Clients = [Address || {_Pid, [{ip, Address}]} <- ems_server:clients()], {ok, Index} = index_template:render([ {files, FileList}, {hostname, ems:get_var(host, "rtmp://localhost")}, {url, File}, + {clients, []}, {session, rtmp_session:encode([{channels, [10, 12]}, {user_id, 5}]) }]), Req:ok([{'Content-Type', "text/html; charset=utf8"}], Index); diff --git a/src/ems_server.erl b/src/ems_server.erl index 9562dc12..f855830b 100644 --- a/src/ems_server.erl +++ b/src/ems_server.erl @@ -39,13 +39,22 @@ -behaviour(gen_server). %% External API --export([start_link/2]). +-export([start_link/2, clients/0]). %% gen_server callbacks -export([init/1, handle_call/3, handle_cast/2, handle_info/2, terminate/2, code_change/3]). +%%-------------------------------------------------------------------- +%% @spec () -> [Ip::tuple()] +%% +%% @doc Show list of clients +%% @end +%%---------------------------------------------------------------------- +clients() -> + Timeout = 10, + lists:map(fun({_, Pid, _, _}) -> {Pid, gen_fsm:sync_send_event(Pid, {info}, Timeout)} end, supervisor:which_children(ems_client_sup)). %%-------------------------------------------------------------------- %% @spec (Port::integer(), Module) -> {ok, Pid} | {error, Reason}