erlang cowboy websocket- количество открытых сокетов

Я написал серверную часть чата на Erlang, используя модуль cowboy.

Я пытаюсь выяснить, как я могу зарегистрировать количество открытых подключений веб-сокетов, которые в настоящее время подключены.

Я долго искал ответ на этот вопрос и не смог его найти.

Ты хоть представляешь, как это можно сделать?

Спасибо за уделенное время,


person gCoh    schedule 04.11.2015    source источник


Ответы (1)


Считайте свой веб-сокет в websocket_init или websocket_handle. Я записываю информацию общественности в ets таблицу веб-сокетов.

Добавить информацию в веб-сокет о:

websocket_handle({text, Msg}, Req, State) ->
            ets:insert(systbl_websockets, {self(), get_current, other_info}),
            {reply, [{text, <<"ok">>}], Req, State, hibernate};
    end;

Удалить информацию из веб-сокета о:

websocket_terminate(_Reason, _Req, _State) ->
    lager:debug("Close connection"),
    ets:delete(systbl_websockets, self()),
    {ok, _Req, _State, shutdown}.
person Dennis Y. Parygin    schedule 05.11.2015
comment
Я реализовал счетчик, повторяющий все процессы, с первоначальным вызовом {cowboy_protocol, init, 4}, похоже, он работает нормально - person gCoh; 05.11.2015
comment
@ user1668328 Эта (итерация процесса) технически кажется мне немного изворотливой. По крайней мере, он мог легко сломаться из-за смены ковбоя. Я должен сказать, что предпочитаю решение, опубликованное ответчиком. - person Michael; 05.11.2015