É claro que estou ciente do Ajax, mas o problema com o Ajax é que o navegador deve pesquisar o servidor com frequência para descobrir se há novos dados. Isso aumenta a carga do servidor.
Existe algum método melhor (mesmo usando o Ajax) além de pesquisar o servidor com frequência?
Respostas:
Sim, o que você está procurando é o COMET http://en.wikipedia.org/wiki/Comet_(programming) . Outros bons termos para pesquisar no Google são AJAX-push e reverse-ajax.
fonte
Sim, chama-se Reverse Ajax ou Cometa . Cometa é basicamente um termo genérico para diferentes maneiras de abrir solicitações HTTP de longa duração, a fim de enviar dados em tempo real para um navegador da web. Eu recomendo o StreamHub Push Server , eles têm algumas demos legais e é muito mais fácil começar do que qualquer outro servidor. Confira o Tutorial de introdução ao cometa e ao StreamHub para obter uma introdução rápida. Você pode usar a Community Edition, disponível para download gratuitamente, mas limitada a 20 usuários simultâneos. A versão comercial vale a pena apenas pelo suporte, além de você obter adaptadores de cliente SSL e Desktop .NET e Java. A ajuda está disponível no Grupo do Google, há muitos tutoriais na rede e também há um adaptador GWT Comet .
fonte
Atualmente você deve usar WebSockets. Este é o padrão de 2011 que permite iniciar conexões com HTTP e atualizá-las para comunicação bidirecional cliente-servidor com base em mensagens.
Você pode iniciar facilmente a conexão do javascript:
O manuseio do lado do servidor depende da sua pilha de tecnologia.
fonte
Veja o Comet (uma paródia do fato de que o Ajax é um agente de limpeza e o Comet), que é basicamente "Ajax reverso". Esteja ciente de que isso requer uma conexão de servidor de longa duração para que cada usuário receba notificações; portanto, esteja ciente das implicações de desempenho ao escrever seu aplicativo.
http://en.wikipedia.org/wiki/Comet_(programming)
fonte
Cometa é definitivamente o que você quer. Dependendo dos requisitos de idioma / estrutura, existem diferentes bibliotecas de servidores disponíveis. Por exemplo, o WebSync é um servidor cometa integrado ao IIS para desenvolvedores do ASP.NET/C#/IIS , e também existem vários outros servidores independentes, se você precisar de uma integração mais rígida com outros idiomas.
fonte
Eu sugeriria fortemente investir algum tempo no Comet, mas não conheço uma implementação ou biblioteca real que você possa usar.
Para uma espécie de "painel de controle do callcenter" de um aplicativo Web que envolvia a atualização do status do agente e da fila de chamadas para um Callcenter ativo, desenvolvemos uma solução interna que funciona, mas está longe de uma biblioteca que você poderia usar.
O que fizemos foi implementar um pequeno serviço no servidor que fala com o sistema telefônico, aguarda novos eventos e mantém uma fotografia da situação. Este serviço fornece um pequeno servidor web.
Nossos clientes da Web se conectam via HTTP a este servidor da Web e solicitam a última foto (codificada em XML), a exibem e depois continua novamente, solicitando a nova foto. O servidor da web neste momento pode:
Dessa forma, quando os clientes fazem pesquisas, obtém uma resposta em 0 a 30 segundos no máximo. Se um novo evento já foi gerado, ele será obtido imediatamente); caso contrário, ele será bloqueado até que um novo evento seja gerado.
É basicamente pesquisa, mas é um pouco inteligente para não superaquecer o servidor da web. Se Comet não for sua resposta, tenho certeza de que isso poderia ser implementado usando a mesma ideia, mas usando mais extensivamente AJAX ou codificando em JSON para obter melhores resultados. Isso foi projetado antes da era AJAX, para que haja muito espaço para melhorias.
Se alguém puder fornecer uma implementação leve e real disso, ótimo!
fonte
Uma alternativa interessante ao Comet é usar soquetes no Flash.
fonte
Outra maneira padrão é o SSE (Eventos Enviados pelo Servidor, também conhecido como EventSource , após o objeto JavaScript).
fonte
O cometa foi realmente cunhado por Alex Russell do Dojo Toolkit ( http://www.dojotoolkit.org ). Aqui está um link para mais informações http://cometdproject.dojotoolkit.org/
fonte
Existem outros métodos. Não tenho certeza se eles são "melhores" na sua situação. Você pode ter um applet Java que se conecta ao servidor no carregamento da página e aguarda o envio de itens pelo servidor. Seria um pouco mais lento na inicialização, mas permitiria que o navegador recebesse dados do servidor com pouca frequência, sem pesquisa.
fonte
Você pode usar um aplicativo Flash / Flex no cliente com BlazeDS ou LiveCycle no lado do servidor. Os dados podem ser enviados ao cliente usando uma conexão RTMP. Esteja ciente de que o RTMP usa uma porta não padrão. Mas você pode voltar facilmente às pesquisas se a porta estiver bloqueada.
fonte
É possível obter o que você deseja através do uso de conexões http persistentes.
Confira o artigo do Cometa na wikipedia, esse é um bom lugar para começar.
Você não está fornecendo muita informação, mas se estiver pensando em criar algum tipo de site orientado a eventos (a'la digg spy) ou algo parecido com o que você provavelmente estará pensando em implementar um IFRAME oculto que se conecta a um URL em que a conexão nunca é fechada e você envia tags de script do servidor para o cliente para executar as atualizações.
fonte
Pode valer a pena conferir o Meteor Server, que é um servidor web projetado para o COMET. Nice demo e também é usado pelo twitterfall .
fonte
Depois que uma conexão é aberta para o servidor, ela pode ser mantida aberta e o servidor pode enviar o conteúdo por push há muito tempo, usei,
multipart/x-mixed-replace
mas isso não funcionou no IE.Eu acho que você pode fazer coisas inteligentes com pesquisas que o fazem funcionar mais como push, não enviando cabeçalhos inalterados, mas deixando a conexão aberta, mas eu nunca fiz isso.
fonte
Você pode experimentar o nosso componente de cometa - embora seja extremamente experimental ...!
fonte
verifique esta biblioteca https://github.com/SignalR/SignalR para saber como enviar dados aos clientes dinamicamente à medida que estiverem disponíveis
fonte
Você também pode procurar no Java Pushlets se estiver usando páginas jsp.
fonte
Também pode querer ver o ReverseHTTP .
fonte