Como rodar websocket com Laravel ?

Olá gurizada!

Tudo joia ? 👋🏼

Alguém poderia me ajudar com essa dúvida ?

Então, PHP não tem suporte nativo pra websocket, já no caso do laravel a alternativa seria usar a ferramenta pusher que é paga e tem uma opção boa free. Porém, quero saber qual a alternativa gratuita, como no caso do GO e Nodejs que possuem event loop nativo, vi que há o PHP Swoole e Laravel Octane, mas tive dificuldade.

Alguém já teve problemas com isso? É interessante ouvir de quem já passou por isso ou já implementou algo assim.

Desde já agradeço! 🦆

Cara, eu poderia digitar muitos textos aqui explicando e tal, mas eu tava com essa mesma dúvida há um tempo, e eu vi um video do pinguim do laravel que me tirou diversas dúvidas usando o reverb, recomendo muito ver esse video que com certeza vai te ajudar. Qualquer coisa, responda aqui se tiver dúvidas específicas que posso te ajudar.

Vou olhar, obrigado!

laravel lançou um pacote nativo pra isso chamado reverb: https://reverb.laravel.com/

Neste repositório eu uso o socketi em docker para gerenciar as conexões.

Tem exemplos de como configurar as conexões, como enviar mensagens e como receber mensagens

Vou pesquisar, obrigado!

Você pode rodar websockets com Laravel de forma gratuita utilizando, por exemplo, o pacote beyondcode/laravel-websockets, que é uma alternativa open source ao Pusher. Essa solução permite criar e gerenciar seu próprio servidor de WebSocket, integrando-o facilmente com o Laravel Echo para transmitir eventos em tempo real.

A seguir, alguns pontos importantes e alternativas:

Laravel Websockets Instalação e Configuração: Basta instalar via Composer:

bash Copiar composer require beyondcode/laravel-websockets Em seguida, publique as configurações e ajuste o arquivo de configuração para definir as credenciais e parâmetros do servidor. Você também precisará configurar o config/broadcasting.php para usar esse driver no lugar do Pusher.

Execução: Após configurar, o servidor pode ser iniciado com:

bash Copiar php artisan websockets:serve Assim, seus eventos disparados pelo Laravel serão transmitidos via WebSocket para os clientes conectados.

Vantagens: Essa abordagem elimina custos extras e oferece uma boa integração com o ecossistema Laravel, mantendo uma comunidade ativa e boa documentação.

PHP Swoole e Laravel Octane PHP Swoole: Swoole fornece um loop de eventos nativo para PHP, permitindo criar servidores assíncronos. No entanto, sua integração direta com Laravel pode exigir configurações específicas e ajustes no código, já que a maioria dos exemplos e tutoriais se concentra em frameworks mais nativos para Swoole.

Laravel Octane: Octane é a camada que permite ao Laravel rodar com Swoole ou RoadRunner, melhorando a performance. Embora ele forneça suporte a aplicações mais reativas, a configuração de websockets pode ser menos trivial e demandar um entendimento mais aprofundado do fluxo de requisições e do gerenciamento de conexões.

Considerações Finais Se o objetivo é obter uma solução gratuita, com uma comunidade ativa e documentação consolidada, o laravel-websockets é uma ótima escolha. Ele abstrai grande parte da complexidade e permite que você foque na lógica do seu aplicativo sem precisar reinventar o gerenciamento de conexões WebSocket.

Já se você tem interesse em explorar o universo de programação assíncrona com PHP e quer aproveitar os ganhos de performance do Swoole, vale a pena investir tempo na configuração com Laravel Octane. Mas esteja preparado para enfrentar uma curva de aprendizado um pouco mais íngreme e lidar com nuances específicas de cada ferramenta.

Em resumo, para muitos projetos, o pacote do Beyond Code oferece um equilíbrio ideal entre facilidade de uso e custo zero. Se precisar de algo mais robusto ou personalizado, explorar Swoole com Octane pode ser o caminho – mas com os desafios adicionais que isso implica.

Espero que essa explicação ajude a direcionar sua escolha e a implementação dos websockets no seu projeto Laravel!

Resposta do GPT