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
