Eu tentei ler alguns artigos, mas ainda não estou muito claro sobre os conceitos.
Alguém gostaria de me explicar o que são essas tecnologias:
- Votação longa
- Eventos Enviados pelo Servidor
- Websockets
- Cometa
Uma coisa que me deparei sempre foi que o servidor mantém uma conexão aberta e envia dados ao cliente. Como a conexão é mantida aberta e como o cliente obtém os dados enviados? (Como o cliente usa os dados, talvez algum código possa ajudar?)
Agora, qual deles devo usar para um aplicativo em tempo real. Eu tenho ouvido muito sobre websockets (com socket.io [uma biblioteca node.js]), mas por que não PHP?
php
websocket
comet
long-polling
server-sent-events
user1437328
fonte
fonte
Respostas:
Nos exemplos abaixo, o cliente é o navegador e o servidor é o servidor da web que hospeda o site.
Antes de entender essas tecnologias, você deve entender primeiro o tráfego HTTP clássico da Web.
HTTP regular:
Pesquisa do Ajax:
Pesquisa longa do Ajax:
Eventos enviados por servidor HTML5 (SSE) / Fonte de eventos:
O servidor envia um evento para o cliente quando há novas informações disponíveis.
Websockets HTML5:
O servidor e o cliente agora podem enviar mensagens um ao outro quando novos dados (em ambos os lados) estiverem disponíveis.
Cometa:
Cometa é uma coleção de técnicas anteriores ao HTML5 que usam streaming e pesquisas longas para obter aplicativos em tempo real. Leia mais na wikipedia ou neste artigo.
Você pode usar PHP com WebSockets, confira Ratchet .
fonte
Tieme se esforçou muito em sua excelente resposta, mas acho que o principal da questão dos OPs é como essas tecnologias se relacionam com o PHP, e não como cada tecnologia funciona.
PHP é a linguagem mais usada no desenvolvimento web, além do óbvio cliente html, css e javascript. No entanto, o PHP tem dois grandes problemas quando se trata de aplicativos em tempo real:
1) O PHP começou como um CGI muito básico. O PHP progrediu muito desde o estágio inicial, mas aconteceu em pequenas etapas. O PHP já tinha muitos milhões de usuários quando se tornou a biblioteca C flexível e incorporável que é hoje, a maioria dos quais dependia de seu modelo anterior de execução, portanto ainda não fez uma tentativa sólida de escapar do modelo cgi internamente. Até a interface da linha de comando chama a biblioteca PHP (libphp5.so no linux, php5ts.dll no Windows, etc) como se ainda fosse um cgi processando uma solicitação GET / POST. Ele ainda executa o código como se tivesse que criar uma "página" e encerrar seu ciclo de vida. Como resultado, ele tem muito pouco suporte para programação multithread ou orientada a eventos (no espaço de usuário PHP), tornando-o atualmente impraticável para aplicativos multiusuário de tempo real.
Observe que o PHP possui extensões para fornecer loops de eventos (como libevent) e threads (como pthreads) no espaço do usuário do PHP, mas muito, muito, poucas aplicações os utilizam.
2) O PHP ainda tem problemas significativos com a coleta de lixo. Embora esses problemas tenham melhorado de maneira consistente (provavelmente é a melhor etapa para terminar o ciclo de vida, conforme descrito acima), mesmo as melhores tentativas de criar aplicativos PHP de execução longa exigem a reinicialização regular. Isso também o torna impraticável para aplicativos em tempo real.
O PHP 7 também será um ótimo passo para corrigir esses problemas e parece muito promissor como plataforma para aplicativos em tempo real.
fonte
Eu tentei fazer anotações sobre isso e coletei e escrevi exemplos de uma perspectiva java .
HTTP para desenvolvedores Java
Reverse Ajax - Estilo antigo
Manipulação assíncrona no lado do servidor
Reverse Ajax - Novo estilo
Eventos Enviados pelo Servidor
Colocando aqui para qualquer desenvolvedor Java que esteja estudando o mesmo assunto.
fonte
Você pode facilmente usar o Node.JS em seu aplicativo Web apenas para comunicação em tempo real. O Node.JS é realmente poderoso quando se trata de WebSockets. Portanto, "Notificações PHP via Node.js" seria um ótimo conceito.
Veja este exemplo: Criando um aplicativo de bate-papo em tempo real com PHP e Node.js
fonte