[Cascavel-pm] Aplicativo de chat usando AJAX + Catalyst

Nilson Santos Figueiredo Junior acid06 em gmail.com
Terça Fevereiro 28 10:35:32 PST 2006


On 2/28/06, Marco A P D'Andrade <mdacwb em gmail.com> wrote:
> Claro que o fato de ser lenta a resposta contribui, mas eu mandei 19
> mensagens (1, 2,3,4,5...9,0,9,...1) e elas chegaram fora de ordem. Seria
> conveniente haver um controle de requisições ao servidor, pois nestas
> situações boa parte dos recursos poderiam ser tomados por um unico
> usuario...

Marco, o servidor sempre manda as mensagens na ordem que recebe.

O que acontece é que, na verdade, sem você saber, o seu browser
mandou-as fora de ordem, por ser um request assíncrono. Não exatamente
ele mandou fora de ordem, eles começaram na ordem certa mas terminaram
em ordens diferentes, pois estavam executando em paralelo.

Em situações normais isso é mais difícil de acontecer, mas em especial
nesse host que eu estou usando, que usa load-balancing, isso fica mais
fácil de acontecer porque enquanto uma mensagem pode ter ido por um
servidor do cluster que está com menos carga outro foi por um com mais
carga. Se fosse um servidor apenas acredito que esse tipo de coisa
seria quase impossível de acontecer.

A solução pra isso é um pouco elaborada e eu, sinceramente, não vou
implementar. Envolveria criar ids de mensagem pra cada cliente e aí
se, por exemplo, a mensagem 7 chegou mas a 6 ainda não, ele mandaria
as duas pros outros clientes somente quando a 6 também chegasse.

Por esse tipo de situação que qualquer técnica de programação
concorrente (threads, etc) acaba gerando alguns problemas difíceis de
solucionar e completamente não previstos.

-Nilson Santos F. Jr.


Mais detalhes sobre a lista de discussão Cascavel-pm