php conference 2016: aplicações em tempo real com o ratchet php

Post on 16-Apr-2017

134 Views

Category:

Software

4 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Aplicações em tempo real com o

RATCHETAryel Tupinambá - PHP Conference 2016

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á

Real-time

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

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

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

O HTTP clássico

Real-time com HTTP puro

Ajax (Polling) Ajax (Long Polling) HTTP streaming

Por que não usar HTTP então?

Overhead (sobrecarga)

da mensagem HTTP

da manutenção de conexão

Comunicação uni-direcional

WebSockets

WebSockets, onde roda

- Chrome, Firefox, Safari

- Internet Explorer 10+, Edge

- Internet Explorer 8 e 9 (via Flash polyfill)

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

WebSockets API

WebSockets API

Sobre o Ratchet

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)

Topologia de uma app Ratchet

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

Na prática - Chat

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

Integrando aplicações existentes

Um post é atualizado pelo editor

O conteúdo do post é atualizado

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

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

Cliente final (Browser)

Aplicação Back-end

(HTTP)

AplicaçãoRatchet

(WebSockets + WAMP)

Cliente final (Browser)

Aplicação Back-end

(HTTP)

AplicaçãoRatchet

(WebSockets + WAMP)

Aplicação Back-end

(HTTP)

AplicaçãoRatchet

(WebSockets + WAMP)

Cliente final (Browser)

Aplicação Back-end

(HTTP)

AplicaçãoRatchet

(WebSockets + WAMP)

Cliente final (Browser)

Aplicação Back-end

(HTTP)

AplicaçãoRatchet

(WebSockets + WAMP)

Cliente final (Browser)

Aplicação Back-end

(HTTP)

AplicaçãoRatchet

(WebSockets + WAMP)

Cliente final (Browser)

Aplicação Back-end

(HTTP)

AplicaçãoRatchet

(WebSockets + WAMP)

Cliente final (Browser)

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

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

Aplicações mais complexas

Autobahn|JS

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

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)

Gostei, quero ver mais!

Ratchet - WebSockets for PHP

Usando Laravel?

Obrigado!Dúvidas?

Telegram: @DfKimeraE-mail / Hangouts: aryel.tupinamba@lqdi.netFacebook: http://facebook.com/aryel.tupinambaTwitter: http://twitter.com/DfKimeraLinkedIn: http://linkedin.com/in/aryeltupinamba

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

http://lqdi.net

top related