Quantidade de sockets abertos por http.agent

54 views
Skip to first unread message

Bruno Milhan

unread,
Jun 25, 2014, 11:43:39 AM6/25/14
to nod...@googlegroups.com
Olá Pessoal, sou novo no mundo do node... Entrei para um projeto na empresa que usa node e estou tendo várias dificuldades, até comprei um livro de um amigo aqui da comunidade para me ajudar nos estudos. 

Bom, indo ao problema, estou com dificuldades para pegar a quantidade de sockets abertos por um Agent. Tentei utilizar de várias formas o método agent.sockets que é descrito na documentação do node, mas não obtive sucesso. Ele me retornar undefined, porém já setei um agent para minhas requisições e está funcionando perfeitamente, pois quando executo o comando netstat no linux consigo ver a quantidade de sockets que estão sendo utilizados que é o mesmo numero que setei no agent.maxSockets... 
Sei que a descrição do problema está bastante vago, mas alguma dica quanto a isso?

Tentei também implementar uma solução incrementando uma variavel a partir dos eventos do node, mas pelo que pude perceber, se não estou engando, estes eventos só funcionam quando configurados um emitter, e não tenho acesso a esta configuração...

Agradeço antecipadamente!

Att.
Bruno

Alberto Souza

unread,
Jun 25, 2014, 12:22:17 PM6/25/14
to nod...@googlegroups.com
Bruno, 

Não entendi bem mas acho que você pode controlar isso com os eventos connect e disconnect e ir salvando ou removendo o usuário em um array ou objeto.

Ou quando precisar desse dado varrer todos os sockets ativos e pegar o que quer.



--
Você recebeu essa mensagem porque está inscrito no grupo quot;Node.js Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para nodebr+un...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

Bruno Milhan

unread,
Jun 25, 2014, 1:55:11 PM6/25/14
to nod...@googlegroups.com
Olá Alberto, tentei fazer desta forma, mas os eventos não são emitidos. 'Cai de paraquedas' neste projeto, estou um pouco perdido... Pelo que pude perceber são feitas requisições em simples http get/ put..., nada de websockets, talvez seja por isso que não consigo utilizar o método agent.sockets para pegar a quantidade de sockets, confuso...

Mas obrigado pela ajuda!

Alberto Souza

unread,
Jun 25, 2014, 2:21:23 PM6/25/14
to nod...@googlegroups.com
é se não roda o 'connection' não está conectando ... ou o código que está conectando está em algum lugar diferente ... 

Alan Hoffmeister

unread,
Jun 25, 2014, 2:42:33 PM6/25/14
to nod...@googlegroups.com
agent.sockets.length deve ser um Number com a quantidade de sockets
abertos, ou http.globalAgent.sockets.length se você não configurou um
http.Agent especial para o processo.

Aqui[0] segue um exemplo de uma contagem de sockets por emissão de evento.

0 - https://gist.github.com/alanhoff/9c4b822da559b6623663

--
Att,
Alan Hoffmeister

Alberto Souza

unread,
Jun 25, 2014, 4:04:14 PM6/25/14
to nod...@googlegroups.com
Bruno, confundi com socket.io ... malz ae ... 



--
Você está recebendo esta mensagem porque se inscreveu no grupo "Node.js Brasil" dos Grupos do Google.

Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para nodebr+un...@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/d/optout.

Bruno Milhan

unread,
Jun 26, 2014, 7:24:10 AM6/26/14
to nod...@googlegroups.com
Obrigado pela ajuda galera, vou me virar aqui! Realmente é dificil de explicar o problema direitinho, o projeto que estou desenvolvendo funciona como se fosse um proxy entre o client e o backend. E Neste caso o problema que estou desenvolvendo está utilizando 3 módulos para requests, não me perguntem o porque. São esses: http, request e http-request... E por isso que estou tendo dificuldades para solucionar o problema, vi que a requisição nossa para o backend que é a que eu gostaria de filtrar os sockets são feitas pelo módulo http-request, e não encontro nenhuma documentação disponivel deste modulo na internet.

Mas obrigado pela ajuda novamente! E vou começar a participar mais da comunidade agora que estou me envolvendo no mundo do node, apesar de ser oriundo de Java mobile e web, estou estranhando bastante o js hehe..

Abraços

Bruno Milhan

unread,
Jun 26, 2014, 12:38:24 PM6/26/14
to nod...@googlegroups.com
Na documentação do node ele diz que quando são requests sem ser do net.socket que é o meu caso, para acessar o socket é preciso utilizar request.connection. Alguem tem um exemplo de como faço isso?

Event: 'connection'#

function (socket) { }

When a new TCP stream is established. socket is an object of type net.Socket. Usually users will not want to access this event. In particular, the socket will not emit readable events because of how the protocol parser attaches to the socket. The socket can also be accessed at request.connection.

Reply all
Reply to author
Forward
0 new messages