Padrão de observador sobre HTTP e TCP / IP (servidor-cliente)

9

Eu tenho um servidor e muitos clientes (cerca de 50 clientes) que se conectam a esse servidor com base em um aplicativo Web, que é obviamente baseado no protocolo HTTP, que por sua vez usa TCP / IP (corrija-me se estiver errado, porque eu não sou muito bom em redes).

O problema é que, eu deveria desenvolver um mecanismo de alerta, no qual, quando alguém enviar um formulário com valores perigosos, o gerente (que também está conectado pelo mesmo aplicativo da web) deve receber um alerta pop-up na tela, quase real tempo (instantaneamente).

No entanto, como o protocolo HTTP não tem estado, estou um pouco intrigado aqui. Não sei como posso implementar isso.

Uma das soluções poderia ser usar JavaScript juntamente com a setInterval()função para extrair dados a cada segundo do servidor. Mas isso parece um pouco sujo para mim e pouco profissional.

Vocês têm alguma idéia de implementar outra solução?

Saeed Neamati
fonte
Esta postagem pode ajudar a stackoverflow.com/questions/640488/…
NoChance
Que tipo de clientes? Clientes thin (baseados em navegador) ou clientes pesados?
ysdx 16/09
@ysdx, pense em clientes. Clientes com suporte apenas ao navegador.
Saeed Neamati

Respostas:

4

Você deve usar algum tipo de push ajax (consulte Cometa ) para notificar os clientes. Ele pode eliminar a necessidade de pesquisa, basicamente você mantém uma conexão estabelecida aberta que pode ser usada para notificar o navegador sobre eventos ocorrentes. No entanto, isso não funciona com todos os navegadores. Você volta a "pesquisas longas" nesses casos.

Falcão
fonte
6

Acho que esse é o motivo pelo qual os WebSockets foram criados. Se você não precisa de compatibilidade com navegadores mais antigos, convém usá-lo em vez de pesquisar. Você provavelmente deve usar a pesquisa como substituto de qualquer maneira.

Não tenho certeza de quão estáveis ​​são as especificações / implementações hoje em dia (não era muito estável há pouco tempo). Parece que a última especificação foi implementada no Firefox 6 e Chromium 14.

ysdx
fonte