Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

PHP Conference 2016: Aplicações em tempo real com o Ratchet PHP

448 views

Published on

O Ratchet é uma biblioteca PHP para desenvolvimento de aplicações em tempo real usando Web Sockets. Com ela, podemos construir de forma simples e desacoplada, desde chats, jogos online, cotações de bolsa, atualizações em tempo real de anúncios, notícias, posts e comentários.

Published in: Software
  • Be the first to comment

  • Be the first to like this

PHP Conference 2016: Aplicações em tempo real com o Ratchet PHP

  1. 1. Aplicações em tempo real com o RATCHET Aryel Tupinambá - PHP Conference 2016
  2. 2. Sobre o palestrante Co-fundador e CTO da LQDI Digital Projetos para empresas como Porto Seguro, Nestlé, Ticket, Editora FTD, Tishman Speyer e Ambev 13 anos trabalhando com PHP Desde a época que o PHPClasses era a onda :) Aryel Tupinambá
  3. 3. Real-time
  4. 4. Real-time = reação imediata (à um evento externo)
  5. 5. Tempo normal vs tempo real Uma nova mensagem de chat é enviada A mensagem aparece na lista de mensagens Uma notificação é recebida Um alerta sonoro e uma caixa de mensagem surgem Um post é atualizado pelo editor O conteúdo do post é atualizado Tempo "normal" Ação realizada RefreshEvento... Reação...
  6. 6. Tempo normal vs tempo real Uma nova mensagem de chat é enviada A mensagem aparece na lista de mensagens Uma notificação é recebida Um alerta sonoro e uma caixa de mensagem surgem Um post é atualizado pelo editor O conteúdo do post é atualizado Tempo real Ação realizadaEvento... Reação...
  7. 7. O HTTP clássico
  8. 8. Real-time com HTTP puro Ajax (Polling) Ajax (Long Polling) HTTP streaming
  9. 9. Por que não usar HTTP então? Overhead (sobrecarga) da mensagem HTTP da manutenção de conexão Comunicação uni-direcional
  10. 10. WebSockets
  11. 11. WebSockets, onde roda - Chrome, Firefox, Safari - Internet Explorer 10+, Edge - Internet Explorer 8 e 9 (via Flash polyfill) - Mobile browsers (Android, iOS, Windows, etc)
  12. 12. WebSockets API
  13. 13. WebSockets API
  14. 14. Sobre o Ratchet
  15. 15. Topologia de uma app Ratchet TCP HTTP WebSockets Ratchet Core IoServer (sockets) SessionProvider (sessões Symfony) Sua aplicação WampServer (canais, pub/sub) WsServer (websockets)
  16. 16. Topologia de uma app Ratchet
  17. 17. Demo - Echo Código disponível em: http://github.com/DfKimera/phpconf16-ratchet/
  18. 18. Na prática - Chat Código disponível em: http://github.com/DfKimera/phpconf16-ratchet/
  19. 19. Integrando aplicações existentes Um post é atualizado pelo editor O conteúdo do post é atualizado Tempo real Ação realizadaEvento... Reação...
  20. 20. Integrando aplicações existentes Um post é atualizado pelo editor O conteúdo do post é atualizado PHP envia mensagem via WebSocket avisando da atualização O usuário acessou o post original Salva no BD Servidor Ratchet recebe o aviso de atualização, e repassa para todos os clients conectados JS no post conecta no servidor Ratchet
  21. 21. Cliente final (Browser) Aplicação Back-end (HTTP) Aplicação Ratchet (WebSockets + WAMP)
  22. 22. Cliente final (Browser) Aplicação Back-end (HTTP) Aplicação Ratchet (WebSockets + WAMP)
  23. 23. Aplicação Back-end (HTTP) Aplicação Ratchet (WebSockets + WAMP) Cliente final (Browser)
  24. 24. Aplicação Back-end (HTTP) Aplicação Ratchet (WebSockets + WAMP) Cliente final (Browser)
  25. 25. Aplicação Back-end (HTTP) Aplicação Ratchet (WebSockets + WAMP) Cliente final (Browser)
  26. 26. Aplicação Back-end (HTTP) Aplicação Ratchet (WebSockets + WAMP) Cliente final (Browser)
  27. 27. Aplicação Back-end (HTTP) Aplicação Ratchet (WebSockets + WAMP) Cliente final (Browser)
  28. 28. Demo - Real-time posts Código disponível em: http://github.com/DfKimera/phpconf16-ratchet/
  29. 29. Aplicações mais complexas The Web Application Messaging Protocol - Suporte a múltiplas aplicações em um mesmo endpoint - Suporte a múltiplos canais - Implementa os patterns Publisher/Subscriber e Remote Procedure Call
  30. 30. Aplicações mais complexas Autobahn|JS - Implementa o protocolo WAMP no JavaScript - Oferece uma interface fluída para o pattern Publisher/Subscriber
  31. 31. O que mais dá pra fazer? - Atualizações em tempo real (posts, comentários, feed, cotações, preços, destaques…) - Games multiplayer em tempo real - Chats em grupo - Transferência de arquivos - Streaming de texto, voz e vídeo (com WebSockets + WebRTC)
  32. 32. Gostei, quero ver mais! Ratchet - WebSockets for PHP Usando Laravel?
  33. 33. Obrigado! Dúvidas? Telegram: @DfKimera E-mail / Hangouts: aryel.tupinamba@lqdi.net Facebook: http://facebook.com/aryel.tupinamba Twitter: http://twitter.com/DfKimera LinkedIn: http://linkedin.com/in/aryeltupinamba Slides da palestra: http://slideshare.net/aryeltupinamba http://lqdi.net

×