SlideShare une entreprise Scribd logo
1  sur  33
Télécharger pour lire hors ligne
Aplicações em
tempo real com o
RATCHET
Aryel Tupinambá - PHP Conference 2016
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á
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 real
Açã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 - Echo
Có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 real
Açã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ção
Ratchet
(WebSockets + WAMP)
Cliente final (Browser)
Aplicação
Back-end
(HTTP)
Aplicação
Ratchet
(WebSockets + WAMP)
Aplicação
Back-end
(HTTP)
Aplicação
Ratchet
(WebSockets + WAMP)
Cliente final (Browser)
Aplicação
Back-end
(HTTP)
Aplicação
Ratchet
(WebSockets + WAMP)
Cliente final (Browser)
Aplicação
Back-end
(HTTP)
Aplicação
Ratchet
(WebSockets + WAMP)
Cliente final (Browser)
Aplicação
Back-end
(HTTP)
Aplicação
Ratchet
(WebSockets + WAMP)
Cliente final (Browser)
Aplicação
Back-end
(HTTP)
Aplicação
Ratchet
(WebSockets + WAMP)
Cliente final (Browser)
Demo - Real-time posts
Có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: @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

Contenu connexe

Tendances

Bg, fg, jobs, nohup - controle de tarefas do shell
Bg, fg, jobs, nohup - controle de tarefas do shellBg, fg, jobs, nohup - controle de tarefas do shell
Bg, fg, jobs, nohup - controle de tarefas do shellFábio dos Reis
 
PHP na Tela Escura: Aplicações Poderosas em Linha de Comando
PHP na Tela Escura: Aplicações Poderosas em Linha de ComandoPHP na Tela Escura: Aplicações Poderosas em Linha de Comando
PHP na Tela Escura: Aplicações Poderosas em Linha de ComandoRafael Jaques
 
TDC2016POA | Trilha IoT - Controlando AR Drone com PHP
TDC2016POA | Trilha IoT -  Controlando AR Drone com PHPTDC2016POA | Trilha IoT -  Controlando AR Drone com PHP
TDC2016POA | Trilha IoT - Controlando AR Drone com PHPtdc-globalcode
 
Python + Delphi: Um relacionamento que está dando certo
Python + Delphi: Um relacionamento que está dando certoPython + Delphi: Um relacionamento que está dando certo
Python + Delphi: Um relacionamento que está dando certoFernando Macedo
 
Docker API Client with PHP and PYTHON
Docker API Client with PHP and PYTHONDocker API Client with PHP and PYTHON
Docker API Client with PHP and PYTHONIago Machado
 
Python com r (mini projeto)
Python com r (mini projeto)Python com r (mini projeto)
Python com r (mini projeto)Danilo Costa
 
Aula 2 primeiros programas 1e
Aula 2 primeiros programas 1eAula 2 primeiros programas 1e
Aula 2 primeiros programas 1eVania V. Estrela
 
Tudo o que você precisa saber sobre o php7
Tudo o que você precisa saber sobre o php7Tudo o que você precisa saber sobre o php7
Tudo o que você precisa saber sobre o php7Er Galvão Abbott
 
MSDN Webcast: Task-based Asynchronous Pattern (TAP), async e await
MSDN Webcast: Task-based Asynchronous Pattern (TAP), async e awaitMSDN Webcast: Task-based Asynchronous Pattern (TAP), async e await
MSDN Webcast: Task-based Asynchronous Pattern (TAP), async e awaitRogério Moraes de Carvalho
 

Tendances (12)

Bg, fg, jobs, nohup - controle de tarefas do shell
Bg, fg, jobs, nohup - controle de tarefas do shellBg, fg, jobs, nohup - controle de tarefas do shell
Bg, fg, jobs, nohup - controle de tarefas do shell
 
PHP na Tela Escura: Aplicações Poderosas em Linha de Comando
PHP na Tela Escura: Aplicações Poderosas em Linha de ComandoPHP na Tela Escura: Aplicações Poderosas em Linha de Comando
PHP na Tela Escura: Aplicações Poderosas em Linha de Comando
 
TDC2016POA | Trilha IoT - Controlando AR Drone com PHP
TDC2016POA | Trilha IoT -  Controlando AR Drone com PHPTDC2016POA | Trilha IoT -  Controlando AR Drone com PHP
TDC2016POA | Trilha IoT - Controlando AR Drone com PHP
 
Python + Delphi: Um relacionamento que está dando certo
Python + Delphi: Um relacionamento que está dando certoPython + Delphi: Um relacionamento que está dando certo
Python + Delphi: Um relacionamento que está dando certo
 
Docker API Client with PHP and PYTHON
Docker API Client with PHP and PYTHONDocker API Client with PHP and PYTHON
Docker API Client with PHP and PYTHON
 
Python com r (mini projeto)
Python com r (mini projeto)Python com r (mini projeto)
Python com r (mini projeto)
 
Curso de Java #05 - Swing e JavaFX
Curso de Java #05 - Swing e JavaFXCurso de Java #05 - Swing e JavaFX
Curso de Java #05 - Swing e JavaFX
 
Aula 2 primeiros programas 1e
Aula 2 primeiros programas 1eAula 2 primeiros programas 1e
Aula 2 primeiros programas 1e
 
Primeira Aula PHP
Primeira Aula PHPPrimeira Aula PHP
Primeira Aula PHP
 
Devcpp
DevcppDevcpp
Devcpp
 
Tudo o que você precisa saber sobre o php7
Tudo o que você precisa saber sobre o php7Tudo o que você precisa saber sobre o php7
Tudo o que você precisa saber sobre o php7
 
MSDN Webcast: Task-based Asynchronous Pattern (TAP), async e await
MSDN Webcast: Task-based Asynchronous Pattern (TAP), async e awaitMSDN Webcast: Task-based Asynchronous Pattern (TAP), async e await
MSDN Webcast: Task-based Asynchronous Pattern (TAP), async e await
 

En vedette

Laraconf 2016: Construindo e mantendo aplicações multi-tenant (multi-cliente)
Laraconf 2016: Construindo e mantendo aplicações multi-tenant (multi-cliente)Laraconf 2016: Construindo e mantendo aplicações multi-tenant (multi-cliente)
Laraconf 2016: Construindo e mantendo aplicações multi-tenant (multi-cliente)Aryel Tupinambá
 
PHP Conference 2014: Uma string em dez milhões de documentos em menos de um s...
PHP Conference 2014: Uma string em dez milhões de documentos em menos de um s...PHP Conference 2014: Uma string em dez milhões de documentos em menos de um s...
PHP Conference 2014: Uma string em dez milhões de documentos em menos de um s...Aryel Tupinambá
 
PHP Conference 2015: Construindo e mantendo aplicações multi-tenant (multi-c...
PHP Conference 2015:  Construindo e mantendo aplicações multi-tenant (multi-c...PHP Conference 2015:  Construindo e mantendo aplicações multi-tenant (multi-c...
PHP Conference 2015: Construindo e mantendo aplicações multi-tenant (multi-c...Aryel Tupinambá
 
Building Multi-Tenant and SaaS products in PHP - CloudConf 2015
Building Multi-Tenant and SaaS products in PHP - CloudConf 2015Building Multi-Tenant and SaaS products in PHP - CloudConf 2015
Building Multi-Tenant and SaaS products in PHP - CloudConf 2015Innomatic Platform
 
Real World Dependency Injection - IPC11 Spring Edition
Real World Dependency Injection - IPC11 Spring EditionReal World Dependency Injection - IPC11 Spring Edition
Real World Dependency Injection - IPC11 Spring EditionStephan Hochdörfer
 
Vyziva a reprodukcia March 22 2010
Vyziva a reprodukcia March 22 2010 Vyziva a reprodukcia March 22 2010
Vyziva a reprodukcia March 22 2010 miloshaa
 
Using Mobility to Nurture Customer Loyalty
Using Mobility to Nurture Customer LoyaltyUsing Mobility to Nurture Customer Loyalty
Using Mobility to Nurture Customer LoyaltySMART Service Desk
 
Storyboard
StoryboardStoryboard
StoryboardZoeYanz
 
FrontInVale 2016: Webpack - A evolução do asset pipeline (Lightning Talk)
FrontInVale 2016: Webpack - A evolução do asset pipeline (Lightning Talk)FrontInVale 2016: Webpack - A evolução do asset pipeline (Lightning Talk)
FrontInVale 2016: Webpack - A evolução do asset pipeline (Lightning Talk)Aryel Tupinambá
 
Technology in the classroom
Technology in the classroomTechnology in the classroom
Technology in the classroomlonifife
 
Конкурсная работа «Столица событийного туризма»
Конкурсная работа   «Столица событийного туризма»Конкурсная работа   «Столица событийного туризма»
Конкурсная работа «Столица событийного туризма»Светлана Воздвиженская
 
Pandey Classes Faculty Members
Pandey Classes Faculty MembersPandey Classes Faculty Members
Pandey Classes Faculty Memberspandeyclasses
 
English inmersion 2011
English inmersion 2011English inmersion 2011
English inmersion 2011kenjabib
 

En vedette (20)

Laraconf 2016: Construindo e mantendo aplicações multi-tenant (multi-cliente)
Laraconf 2016: Construindo e mantendo aplicações multi-tenant (multi-cliente)Laraconf 2016: Construindo e mantendo aplicações multi-tenant (multi-cliente)
Laraconf 2016: Construindo e mantendo aplicações multi-tenant (multi-cliente)
 
PHP Conference 2014: Uma string em dez milhões de documentos em menos de um s...
PHP Conference 2014: Uma string em dez milhões de documentos em menos de um s...PHP Conference 2014: Uma string em dez milhões de documentos em menos de um s...
PHP Conference 2014: Uma string em dez milhões de documentos em menos de um s...
 
PHP Conference 2015: Construindo e mantendo aplicações multi-tenant (multi-c...
PHP Conference 2015:  Construindo e mantendo aplicações multi-tenant (multi-c...PHP Conference 2015:  Construindo e mantendo aplicações multi-tenant (multi-c...
PHP Conference 2015: Construindo e mantendo aplicações multi-tenant (multi-c...
 
Building Multi-Tenant and SaaS products in PHP - CloudConf 2015
Building Multi-Tenant and SaaS products in PHP - CloudConf 2015Building Multi-Tenant and SaaS products in PHP - CloudConf 2015
Building Multi-Tenant and SaaS products in PHP - CloudConf 2015
 
Mashing up JavaScript
Mashing up JavaScriptMashing up JavaScript
Mashing up JavaScript
 
Real World Dependency Injection - IPC11 Spring Edition
Real World Dependency Injection - IPC11 Spring EditionReal World Dependency Injection - IPC11 Spring Edition
Real World Dependency Injection - IPC11 Spring Edition
 
Vyziva a reprodukcia March 22 2010
Vyziva a reprodukcia March 22 2010 Vyziva a reprodukcia March 22 2010
Vyziva a reprodukcia March 22 2010
 
Nuevas tics
Nuevas ticsNuevas tics
Nuevas tics
 
Using Mobility to Nurture Customer Loyalty
Using Mobility to Nurture Customer LoyaltyUsing Mobility to Nurture Customer Loyalty
Using Mobility to Nurture Customer Loyalty
 
Storyboard
StoryboardStoryboard
Storyboard
 
FrontInVale 2016: Webpack - A evolução do asset pipeline (Lightning Talk)
FrontInVale 2016: Webpack - A evolução do asset pipeline (Lightning Talk)FrontInVale 2016: Webpack - A evolução do asset pipeline (Lightning Talk)
FrontInVale 2016: Webpack - A evolução do asset pipeline (Lightning Talk)
 
Technology in the classroom
Technology in the classroomTechnology in the classroom
Technology in the classroom
 
Informe de gestión y acta de empalme
Informe de gestión y acta de empalmeInforme de gestión y acta de empalme
Informe de gestión y acta de empalme
 
Конкурсная работа «Столица событийного туризма»
Конкурсная работа   «Столица событийного туризма»Конкурсная работа   «Столица событийного туризма»
Конкурсная работа «Столица событийного туризма»
 
отчет за 2013 год
отчет за 2013 годотчет за 2013 год
отчет за 2013 год
 
рцо «арсенал»
рцо «арсенал»рцо «арсенал»
рцо «арсенал»
 
Pandey Classes Faculty Members
Pandey Classes Faculty MembersPandey Classes Faculty Members
Pandey Classes Faculty Members
 
Canada student Visa
Canada student VisaCanada student Visa
Canada student Visa
 
English inmersion 2011
English inmersion 2011English inmersion 2011
English inmersion 2011
 
Wedding Invitation
Wedding InvitationWedding Invitation
Wedding Invitation
 

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

Php Visao Geral Svs
Php Visao Geral SvsPhp Visao Geral Svs
Php Visao Geral Svscristhianobv
 
Aplicações Realtime com PHP
Aplicações Realtime com PHPAplicações Realtime com PHP
Aplicações Realtime com PHPGustavo Castro
 
Minicurso IOT com javascript - SBTI
Minicurso IOT com javascript - SBTIMinicurso IOT com javascript - SBTI
Minicurso IOT com javascript - SBTImarcochella
 
BrazilJS - Node.JS Realtime Web Applications
BrazilJS - Node.JS Realtime Web ApplicationsBrazilJS - Node.JS Realtime Web Applications
BrazilJS - Node.JS Realtime Web ApplicationsEmerson Macedo
 
Visual Studio 2010 e C# 4
Visual Studio 2010 e C# 4Visual Studio 2010 e C# 4
Visual Studio 2010 e C# 4CDS
 
Comunicação em tempo real com WebRTC e PHP
Comunicação em tempo real com WebRTC e PHPComunicação em tempo real com WebRTC e PHP
Comunicação em tempo real com WebRTC e PHPMichael Douglas
 
036 programando para-web-com-php-e-mysql
036 programando para-web-com-php-e-mysql036 programando para-web-com-php-e-mysql
036 programando para-web-com-php-e-mysqlTiago
 
Desenvolvendo para web ASP.Net (Overview para iniciantes)
Desenvolvendo para web ASP.Net (Overview para iniciantes)Desenvolvendo para web ASP.Net (Overview para iniciantes)
Desenvolvendo para web ASP.Net (Overview para iniciantes)Fernando Gonçalves
 
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web APIUma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web APIComunidade NetPonto
 
O que são linguagens de scripting m18
O que são linguagens de scripting m18O que são linguagens de scripting m18
O que são linguagens de scripting m18tomascarol2
 
Ligação do Flex a um backend LAMP usando AMFPHP
Ligação do Flex a um backend LAMP usando AMFPHPLigação do Flex a um backend LAMP usando AMFPHP
Ligação do Flex a um backend LAMP usando AMFPHPelliando dias
 

Similaire à PHP Conference 2016: Aplicações em tempo real com o Ratchet PHP (20)

Php Visao Geral Svs
Php Visao Geral SvsPhp Visao Geral Svs
Php Visao Geral Svs
 
Python CGI
Python CGIPython CGI
Python CGI
 
Aplicações Realtime com PHP
Aplicações Realtime com PHPAplicações Realtime com PHP
Aplicações Realtime com PHP
 
Minicurso IOT com javascript - SBTI
Minicurso IOT com javascript - SBTIMinicurso IOT com javascript - SBTI
Minicurso IOT com javascript - SBTI
 
Netflix oss
Netflix ossNetflix oss
Netflix oss
 
Big Data na Globo.com - Dev Version - 2016
Big Data na Globo.com - Dev Version - 2016Big Data na Globo.com - Dev Version - 2016
Big Data na Globo.com - Dev Version - 2016
 
BrazilJS - Node.JS Realtime Web Applications
BrazilJS - Node.JS Realtime Web ApplicationsBrazilJS - Node.JS Realtime Web Applications
BrazilJS - Node.JS Realtime Web Applications
 
Novidades do .Net 4.0
Novidades do .Net 4.0Novidades do .Net 4.0
Novidades do .Net 4.0
 
RHQ 4 Gerenciamento efetivo de servidores JBoss
RHQ 4 Gerenciamento efetivo de servidores JBossRHQ 4 Gerenciamento efetivo de servidores JBoss
RHQ 4 Gerenciamento efetivo de servidores JBoss
 
Visual Studio 2010 e C# 4
Visual Studio 2010 e C# 4Visual Studio 2010 e C# 4
Visual Studio 2010 e C# 4
 
Comunicação em tempo real com WebRTC e PHP
Comunicação em tempo real com WebRTC e PHPComunicação em tempo real com WebRTC e PHP
Comunicação em tempo real com WebRTC e PHP
 
Phpmanual
PhpmanualPhpmanual
Phpmanual
 
Programando para web com php my sql - fed cox junior
Programando para web com php my sql - fed cox juniorProgramando para web com php my sql - fed cox junior
Programando para web com php my sql - fed cox junior
 
036 programando para-web-com-php-e-mysql
036 programando para-web-com-php-e-mysql036 programando para-web-com-php-e-mysql
036 programando para-web-com-php-e-mysql
 
Filtro de SPAM
Filtro de SPAMFiltro de SPAM
Filtro de SPAM
 
Desenvolvendo para web ASP.Net (Overview para iniciantes)
Desenvolvendo para web ASP.Net (Overview para iniciantes)Desenvolvendo para web ASP.Net (Overview para iniciantes)
Desenvolvendo para web ASP.Net (Overview para iniciantes)
 
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web APIUma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web API
 
Php
PhpPhp
Php
 
O que são linguagens de scripting m18
O que são linguagens de scripting m18O que são linguagens de scripting m18
O que são linguagens de scripting m18
 
Ligação do Flex a um backend LAMP usando AMFPHP
Ligação do Flex a um backend LAMP usando AMFPHPLigação do Flex a um backend LAMP usando AMFPHP
Ligação do Flex a um backend LAMP usando AMFPHP
 

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