Pergunta

Recentemente, encontrei alguns casos em que um servidor distribuiria um fluxo de eventos que contém exatamente os mesmos dados para todos os ouvintes, como uma caixa de 'atividade recente'.

Ocorreu -me que é bastante estranho e ineficiente ter um servidor como o Apache executar um processamento de thread e consultar o banco de dados para cada fluxo de cometa que contém os mesmos dados.

O que eu faria por esses fluxos globais (não por usuário) é executar um único thread que emite contínuo dados e um novo thread (verde) para cada nova solicitação que produz os cabeçalhos e depois 'mescla' no encadeamento principal.

É possível que um thread sirva vários soquetes ou vários clientes ouçam o mesmo soquete?

Um exemplo

o = evento

       # threads received
|  a b # 3
o / /  # 3       -
|/_/
|      # 1
o  c   # 2       a, b
| /
o/     # 2       a, b
o      # 1       a, b, c
|      #                    connection b closed
o      # 1       a, c

Será que algo assim existe? Funcionaria? É possível fazer?

Isenção de responsabilidade: não sou especialista em servidor.

Foi útil?

Solução

Confira o Node.js - servidor único, encadeado, acionado por eventos. Usa o JavaScript como um bônus.

Outras dicas

Se você estiver usando asp.net, a seguinte postagem deve ser útil

http://beta.codeproject.com/kb/aspnet/cometasync.aspx

A propósito, é possível implementar o Comet para servir mais de um cliente por thread, mas apenas um thread para todos os clientes parece não suficiente?

Você está falando sobre "solicitações assíncronas da web" aplicadas ao cometa, algumas gostam de "cometa assíncrono".

Na minha opinião, essa abordagem, tão popular hoje em dia, é profundamente falho.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top