Problema Resolvido!

A solução aproveitei para criar um post no meu blog (escrevi meio
correndo o que importa são os códigos :D)
http://www.cauirs.com.br/rafael/?p=119

O qq acharam do resultado?

On 20 jul, 18:42, RafaelViana <[email protected]> wrote:
> Uma coisa que não consegui entender é porque tanto FlexSession como
> FlexClient (herdam da TimeoutAbstractObject) tem o setTimeoutPeriod,
> se esse valor é ignorado.
>
> setTimeoutPeriod
> Determine the time, in milliseconds, that this object is allowed to
> idle before having its timeout method invoked.
>
> Fiquei durante um bom tempo tentando entender porque o timeout não
> funciona... só funcionou quando declarei o timeout no web.xml...
>
> Também outras pessoas tiveram esse problema:
>
> http://groups.google.com.br/group/flexbrasil/browse_thread/thread/6fe...http://br.groups.yahoo.com/group/flex-brasil/message/21129
>
> On 20 jul, 18:25, RafaelViana <[email protected]> wrote:
>
>
>
> > @MarioJunior
>
> > Perfeito, isso que ia comentar agora. (podia ter falado antes :D)
> > Estive realizando uns testes (para entender como é o funcionamento
> > dessas sessões no BlazeDS)
>
> > Simulação (timeout de um minuto no web.xml)
>
> > Abro o exemplo no Firefox -> Criada uma sessão, criado um FlexClient
> > Abro o exemplo em outra aba do Firefox -> Cria apenas um FlexClient
> > (aproveita a sessão que já está aberta)
> > Abro o exemplo no Chrome -> Criada uma sessão, criado um FlexClient
> > (ainda não existia uma sessão aberta no chrome, por isso teve que
> > abrir uma nova)
> > Se eu fico fazendo requisições com o exemplo do Firefox (da 1° aba) a
> > sessão fica aberta, e após um minuto como não teve nenhuma chamada
> > pela sessão aberta no chrome ela é destruida.
> > No entanto, a 2° aba do Firefox (2° FlexClient) ainda não foi
> > destruido, pois ele compartilha a sessão com o 1° FlexClient que
> > manteve a sessão aberta por causa da interação que a 1° aba teve.
> > No momento que fico um minuto sem interagir com o exemplo do Firefox a
> > sessão é destruida e leva os dois FlexClient junto.Portanto, Os
> > FlexClients ficam "bindados" na sessão.
>
> > Também achei nos docs essa explicação:
>
> > "A FlexSession can also have one or more FlexClients associated with
> > it. For example, when a SWF file that uses an HTTPChannel is opened in
> > two tabs, two FlexClient instances are created in the BlazeDS server
> > (one for each SWF file), but there is only one FlexSession because two
> > tabs share the same underlying HTTP session."
>
> > Agora vou implementar a lógica para não permitir os usuários
> > conectados ao mesmo tempo, acho que com esse entendimento vai ficar
> > bem mais fácil implementar.Essa maneira acredito que vá ficar bem
> > seguro (não precisar contar com códigos javascripts nem registros no
> > banco de dados - queria ficar longe disso :D).
>
> > Daqui a pouco trago aqui a solução :D (espero...)
>
> > On 20 jul, 16:38, Mário Júnior <[email protected]> wrote:
>
> > > Os clients permancem lá pq a sessao deles ainda nao expirou. :)
> > > Mas a junção disso, com um session e um listener deve resolver sua 
> > > questao.
>
> > > []s
>
> > > Em 20 de julho de 2010 14:22, Marcelo Caser 
> > > <[email protected]>escreveu:
>
> > > > Sim, vc define o timeout da sua app.
>
> > > > Em 20 de julho de 2010 14:06, RafaelViana <[email protected]> 
> > > > escreveu:
>
> > > > Esse FlexSessionListener tem um funcionamento semelhante ao
> > > >> ServletRequestListener?
> > > >> Se o usuário fechar a aplicação a sessão dele continuará aberta até
> > > >> chegar o tempo do timeout correto?
>
> > > >> On 20 jul, 13:30, Marcelo Caser <[email protected]> wrote:
> > > >> > Procure sobre FlexSessionListener e extenda dela uma classe para seu
> > > >> > Listener...
>
> > > >> > Todo enveto de FlexSession o listener ira "ëscutar" então fica fácil 
> > > >> > vc
> > > >> > remover os usuários....
>
> > > >> > Em 20 de julho de 2010 13:00, RafaelViana <[email protected]>
> > > >> escreveu:
>
> > > >> > > Legal ver que a discussão está rendendo :D
> > > >> > > Muito boa algumas dicas aqui.
>
> > > >> > > Estive olhando as classes do BlazeDS, FlexClient, FlexSession
>
> > > >> > > Vi que consigo pegos todos os clientes do Flex que estão 
> > > >> > > conectados:
> > > >> > > FlexContext.getFlexSession().getFlexClients();
>
> > > >> > > Porém, se eu fecho o browser os clientes continuam la.Então, vou
> > > >> > > tentar implementar assim: Sessão com timeout baixo.ex: 15s, e um
> > > >> > > polling no flex inferior a esses 15s que cria uma nova sessão
> > > >> > > excluindo a antiga.Assim, se o usuário fechar o browser não será 
> > > >> > > feito
> > > >> > > esse polling e a sessão será invalida alguns segundos depois.
>
> > > >> > > E ai junto com isso, um listener na sessão para quando ela for
> > > >> > > invalidada chamar algo.
>
> > > >> > > Vamos ver se funciona :D
>
> > > >> > > On 20 jul, 12:16, Marcelo Caser <[email protected]> wrote:
> > > >> > > > Pesquise sobre HttpFlexSession, Listener, pois para resolver o
> > > >> problema
> > > >> > > se o
> > > >> > > > usuário, clicou ou não em "Efetuar logoff" é preciso validar a
> > > >> sessão com
> > > >> > > o
> > > >> > > > browser. Aqui trabalho com java no back-end e o controle é feito 
> > > >> > > > com
> > > >> > > Filters
> > > >> > > > e com uma classe que eu extendo de JavaAdpater para fazer o 
> > > >> > > > controle
> > > >> da
> > > >> > > > Session!
>
> > > >> > > > Em breve vou postar algo sobre isso em meu blog. Realmente há 
> > > >> > > > pouca
> > > >> coisa
> > > >> > > > sobre sessão no Flex.
>
> > > >> > > > Em 20 de julho de 2010 12:04, Vinícius Velasco <
> > > >> [email protected]
> > > >> > > >escreveu:
>
> > > >> > > > > Sera que não daria pra fazer assim: uma especie de chat, quando
> > > >> ele
> > > >> > > entrar
> > > >> > > > > fik na lista de pessoas do chat pq geralmente os chat qdo a 
> > > >> > > > > pessoa
> > > >> > > fecha a
> > > >> > > > > conexao, seja clicando em botao, fechando o browser ou até 
> > > >> > > > > mesmo
> > > >> > > travando a
> > > >> > > > > aplicação em determinando tempo ele sai do chat sozinho... axo 
> > > >> > > > > que
> > > >> no
> > > >> > > caso
> > > >> > > > > do flex vc ia ter q usar RMTP... só uma ideia
>
> > > >> > > > > Em 20 de julho de 2010 11:48, Willian Zacariotto <
> > > >> [email protected]
> > > >> > > >escreveu:
>
> > > >> > > > >   É não pensei nisso... nem Ajax deve resolver isso, só o 
> > > >> > > > > back-end
> > > >> > > mesmo
>
> > > >> > > > >> *De:* [email protected] 
> > > >> > > > >> [mailto:[email protected]]
> > > >> *Em
> > > >> > > nome
> > > >> > > > >> de *Guilherme Sjlender
> > > >> > > > >> *Enviada em:* terça-feira, 20 de julho de 2010 11:44
>
> > > >> > > > >> *Para:* [email protected]
> > > >> > > > >> *Assunto:* Re: [flexdev] Re: Apenas um usuário logado por vez
>
> > > >> > > > >> E se o browser do usuário estiver desabilitado para JS? =P
>
> > > >> > > > >> Não sei quanto a vocês, mas o princípio de uma solução só 
> > > >> > > > >> poderá
> > > >> vir
> > > >> > > do
> > > >> > > > >> back-end, seja ele a línguagem que for.
> > > >> > > > >> ^^
>
> > > >> > > > >> Att.
>
> > > >> > > > >> Em 20 de julho de 2010 11:41, Willian Zacariotto <
> > > >> [email protected]>
> > > >> > > > >> escreveu:
>
> > > >> > > > >> E se colocar um js pra perguntar se o usuário deseja sair? Ou 
> > > >> > > > >> não
> > > >> há
> > > >> > > > >> possibilidade de usar o js pra acessar métodos no flex?
>
> > > >> > > > >> *De:* [email protected] 
> > > >> > > > >> [mailto:[email protected]]
> > > >> *Em
> > > >> > > nome
> > > >> > > > >> de *Guilherme Sjlender
> > > >> > > > >> *Enviada em:* terça-feira, 20 de julho de 2010 11:26
> > > >> > > > >> *Para:* [email protected]
> > > >> > > > >> *Assunto:* Re: [flexdev] Re: Apenas um usuário logado por vez
>
> > > >> > > > >> Infelizmente não existe essa possibilidade de monitorar no 
> > > >> > > > >> flex
> > > >> quando
> > > >> > > é
> > > >> > > > >> fechado o browser...
>
> > > >> > > > >> Isso só seria possível atravéz de backend em php(Uma vez vi um
> > > >> exemplo
> > > >> > > no
> > > >> > > > >> blog do Eduardo Kraus como faze-lo.
>
> > > >> > > > >> É, se for feito uma validação a cada N minutos se o usuário 
> > > >> > > > >> está
> > > >> > > logado ou
> > > >> > > > >> não, irá funcionar mas não será da forma mais "elegante" e
> > > >> > > "performática"
> > > >> > > > >> concordas?  =)
>
> > > >> > > > >> Mas é isso, conversando aprendemos muito mais ^^
>
> > > >> > > > >> Att.
>
> > > >> > > > >> Em 20 de julho de 2010 11:16, Júnior Parmigiani <
> > > >> > > > >> [email protected]> escreveu:
>
> > > >> > > > >> Perfeito Guilher, não necessáriamente deve clicar em logoff, 
> > > >> > > > >> no
> > > >> flex
> > > >> > > > >> conseguimos pegar quando o user fecha o navegador não 
> > > >> > > > >> conseguimos
> > > >> ? se
> > > >> > > > >> sim neste momento posso excluir o registro, n maneira, tbm
> > > >> poderiamos
> > > >> > > > >> manter um tempo que este registro vai ficar gravado etc.
>
> > > >> > > > >> mas fica registrado a dica.
>
> > > >> > > > >> abraço.
>
> > > >> > > > >> --
> > > >> > > > >> Você recebeu esta mensagem porque está inscrito na lista
> > > >> "flexdev"
> > > >> > > > >> Para enviar uma mensagem, envie um e-mail para
> > > >> > > [email protected]
> > > >> > > > >> Para sair da lista, envie um email em branco para
> > > >> > > > >> [email protected]
> > > >> > > > >> Mais opções estão disponíveis emhttp://
> > > >> > > groups.google.com/group/flexdev
>
> > > >> > > > >> --
> > > >> > > > >> -----------------------------------------------------------
> > > >> > > > >> Guilherme Sjlender                            -
> > > >> > > > >> Desenvolvedor RIA - Flex/Java         -
> > > >> > > > >>http://site.gflex.biz                   -
> > > >> > > > >> ------------------------------------------------
>
> > > >> > > > >> --
>
> > > >> > > > >> Você recebeu esta mensagem porque está inscrito na lista
> > > >> "flexdev"
> > > >> > > > >> Para enviar uma mensagem, envie um e-mail para
> > > >> > > [email protected]
> > > >> > > > >> Para sair da lista, envie um email em branco para
> > > >> > > > >> [email protected]
> > > >> > > > >> Mais opções estão disponíveis emhttp://
> > > >> > > groups.google.com/group/flexdev
>
> > > >> > > > >> --
>
> ...
>
> mais »

-- 
Você recebeu esta mensagem porque está inscrito na lista "flexdev"
Para enviar uma mensagem, envie um e-mail para [email protected]
Para sair da lista, envie um email em branco para 
[email protected]
Mais opções estão disponíveis em http://groups.google.com/group/flexdev

Responder a