Avatar ·

O que são Long-Polling, WebSockets, SSE e Comet? Como implementá-los em PHP?

Olá a todos! Sou um desenvolvedor PHP iniciante e recentemente me deparei com uma tarefa: preciso fazer um chat no site para que as mensagens cheguem sem recarregar a página. Conheço AJAX, mas lá preciso enviar requisições constantemente, o que não é eficiente. Comecei a pesquisar e me deparei com os termos: Long-Polling, WebSockets, Server-Sent Events (SSE) e Comet. Sinceramente, fiquei confuso. Até onde entendo: Long-Polling é quando o cliente envia uma requisição e o servidor a mantém aberta até que uma nova mensagem apareça. Mas como implementar isso em PHP? PHP é single-thread, não pode ficar pendurado por muito tempo, senão a memória cai. WebSockets é uma conexão permanente, mas ouvi dizer que PHP não é muito adequado para isso, sendo melhor usar Node.js ou Go. Já SSE é algo como um fluxo de dados do servidor para o cliente, mas parece que funciona apenas em uma direção. Comet soa como algo antigo. Aqui está um exemplo simples de polling AJAX que estou usando atualmente (em PHP): ```php // poll.php $lastId = $_GET['last_id'] ?? 0; $m