2015-11-04 1 views
1

J'ai écrit un backend de discussion Erlang, en utilisant le module cowboy.erlang cowboy websocket- nombre de sockets ouvertes

J'essaie de comprendre comment puis-je enregistrer le nombre de connexions de socket Web ouvertes, qui sont actuellement connectées.

Je cherchais une réponse à cette question depuis un moment, et je ne pouvais pas en trouver un.

Avez-vous une idée de comment cela pourrait être fait?

Merci pour votre temps,

Répondre

3

Ne comptez votre websocket dans websocket_init ou websocket_handle je note l'information du public dans websocket ets Table

Ajouter des informations websocket sur:

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

Supprimer les informations sur le Web à propos de:

websocket_terminate(_Reason, _Req, _State) -> 
    lager:debug("Close connection"), 
    ets:delete(systbl_websockets, self()), 
    {ok, _Req, _State, shutdown}. 
+0

j'ai mis en place un compteur, itérer sur tous les processus, avec l'appel initial de {cowboy_protocol, init, 4} cela semble fonctionner très bien – gCoh

+1

@ user1668328 Ce (itération de processus) semble techniquement un peu louche pour moi. À tout le moins, il pourrait se casser facilement en raison de changements de cow-boy. Je dois dire que je préfère la solution postée par le répondeur. – Michael