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/6fec7f91d802638f 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 > > > >> > > > >> -- > > >> > > > >> 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 > > ... > > 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
