33
Aplicações em tempo real com o RATCHET Aryel Tupinambá - PHP Conference 2016

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

Embed Size (px)

Citation preview

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

Aplicações em tempo real com o

RATCHETAryel Tupinambá - PHP Conference 2016

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

Sobre o palestrante

Co-fundador e CTO da LQDI DigitalProjetos para empresas como Porto Seguro, Nestlé, Ticket, Editora FTD, Tishman Speyer e Ambev

13 anos trabalhando com PHPDesde a época que o PHPClasses era a onda :)

Aryel Tupinambá

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

Real-time

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

Real-time = reação imediata (à um evento externo)

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

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...

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

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 realAção realizadaEvento... Reação...

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

O HTTP clássico

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

Real-time com HTTP puro

Ajax (Polling) Ajax (Long Polling) HTTP streaming

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

Por que não usar HTTP então?

Overhead (sobrecarga)

da mensagem HTTP

da manutenção de conexão

Comunicação uni-direcional

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

WebSockets

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

WebSockets, onde roda

- Chrome, Firefox, Safari

- Internet Explorer 10+, Edge

- Internet Explorer 8 e 9 (via Flash polyfill)

- Mobile browsers (Android, iOS, Windows, etc)

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

WebSockets API

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

WebSockets API

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

Sobre o Ratchet

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

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)

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

Topologia de uma app Ratchet

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

Demo - EchoCódigo disponível em: http://github.com/DfKimera/phpconf16-ratchet/

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

Na prática - Chat

Código disponível em: http://github.com/DfKimera/phpconf16-ratchet/

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

Integrando aplicações existentes

Um post é atualizado pelo editor

O conteúdo do post é atualizado

Tempo realAção realizadaEvento... Reação...

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

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

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

Cliente final (Browser)

Aplicação Back-end

(HTTP)

AplicaçãoRatchet

(WebSockets + WAMP)

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

Cliente final (Browser)

Aplicação Back-end

(HTTP)

AplicaçãoRatchet

(WebSockets + WAMP)

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

Aplicação Back-end

(HTTP)

AplicaçãoRatchet

(WebSockets + WAMP)

Cliente final (Browser)

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

Aplicação Back-end

(HTTP)

AplicaçãoRatchet

(WebSockets + WAMP)

Cliente final (Browser)

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

Aplicação Back-end

(HTTP)

AplicaçãoRatchet

(WebSockets + WAMP)

Cliente final (Browser)

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

Aplicação Back-end

(HTTP)

AplicaçãoRatchet

(WebSockets + WAMP)

Cliente final (Browser)

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

Aplicação Back-end

(HTTP)

AplicaçãoRatchet

(WebSockets + WAMP)

Cliente final (Browser)

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

Demo - Real-time postsCódigo disponível em: http://github.com/DfKimera/phpconf16-ratchet/

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

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

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

Aplicações mais complexas

Autobahn|JS

- Implementa o protocolo WAMP no JavaScript- Oferece uma interface fluída para o pattern Publisher/Subscriber

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

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)

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

Gostei, quero ver mais!

Ratchet - WebSockets for PHP

Usando Laravel?

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

Obrigado!Dúvidas?

Telegram: @DfKimeraE-mail / Hangouts: [email protected]: http://facebook.com/aryel.tupinambaTwitter: http://twitter.com/DfKimeraLinkedIn: http://linkedin.com/in/aryeltupinamba

Slides da palestra: http://slideshare.net/aryeltupinamba

http://lqdi.net