hiperCorreio   

Debate hiperL

     
[Anterior] [Próxima] [Responder] [Sem Formatação] [Outros Debates] [Ver Listagem]
Como manter uma lista de presença num chat?
Remetente: fernando@hipernet.ufsc.br
Data  de  Envio: 2002-04-23  10:33:49.000
Como manter uma lista de presença atualizada numa aplicação de muitos participantes?

Por exemplo, num chat...


Ai vai uma dica, baseada nos experimentos das turmas passadas:

Um sistema de gerenciamento de lista de Presença tem tres elementos principais:

a. Gerenciador de Lista
  Processo que cuida de manter uma lista permanentemente atualizada
  Passado um intervalo de tempo pré-determinado, ele deve emitir pela rede a lista 
de presença

b. Apresentador da lista
  Processo que cuida de receber a lista pela rede e tratar de sua apresentação ao 
usuário (visão)

c. Anunciador de Presença
  Processo que trata de emitir um sinal de vida qualquer ('toVivo'!)  a cada 
intervalo de tempo pré-determinado

Esses tres elementos deve estar presentes ao mesmo tempo na aplicação.
Um exemplo de funcionamento básico: 

  . A cada 10 segundos, o AnunciadorDePresença emite um 'toVivo' pela rede.
  . O Gerenciador capta esse 'toVivo' e inclui o apelido correspondente na listaDePresença
  . A cada 30 segundos, o gerenciador emite a listaDePresença pela rede
  . O Apresentador capta esse evento, e faz a apresentação da lista no monitor

 (intervalos de tempo devem ser sincronizados para a sua aplicação)

Uma vantagem é que esse esquema funciona bem para entradas e saidas comprtadas, 
assim como para os casos (muito comuns) em que qualquer dos presentes simplesmente 
abandonar a aplicação (fechar o navegador).
Para isso, a cada vez que anuncia a lista pela rede, o Gerenciador zera seu 
conhecimento e inicia a confecção de nova lista atualizada
Os intervalos entre os 'toVivo', sendo menores do que os intervalos do 
gerenciador, dão chance ao gerenciador de captar sinais de processos que eventualmente tenham 
sido emitidos enquanto o gerenciador estava ocupado atualizando a lista.

Mais tarde envio um exemplo funcionando...

melga

[Anterior] [Próxima] [Responder] [Início da Mensagem]