SlideShare a Scribd company logo
1 of 51
Download to read offline
Comunicação em
tempo real com
WebRTC e PHP
Eu sou Michael
Douglas Barbosa
Araujo
Criador da Laravel PagSeguro, um dos
responsáveis pela Laravel Conference
Brasil e Full Stack Developer na Atitude.
▷ http://www.facebook.com.br/groups/silexbrasil
▷ http://www.facebook.com.br/groups/laravelsp
▷ http://www.facebook.com.br/groups/phingbrasil
▷ http://www.facebook.com.br/groups/sonicpibrasil
▷ http://www.facebook.com.br/groups/doctrinebrasil
Criador e mantenedor:
https://github.com/michaeldouglas
https://twitter.com/mdba_araujo
https://facebook.com/mdba.araujo
Livro: Zend Certified Engineer -
Descomplicando a certificação PHP.
Ao final da palestra 2 pessoas serão
sorteadas !
Laravel PagSeguro:
https://github.com/michaeldouglas/larav
el-pagseguro - Atualmente entrando
como pacote oficial Pagseguro e
Laravel.
E concluindo juntamente
com o Matheus Marabesi o
livro de Laravel pela
Novatec!
1.
Aplicação em tempo
Real ?
“Geralmente você assim como eu criamos nossas
páginas com base no conhecido paradigma de
solicitação e resposta do HTTP.
O cliente carrega nossa página, em seguida, nada
acontece até que o usuário clique na próxima página ?
Ajax !
▷ Por volta de 2005, Ajax começou a deixar a web
mais dinâmica!
▷ Mesmo assim, ainda não tínhamos o poder de
criar aplicações real-time efetivamente !
▷ Porém veja existiam mesmo na época outras
soluções. Todo mundo aqui conhece o placar uol
?- Quais soluções possuímos ?
Apache Pooling
Solução que fica a todo momento perguntando,
se já existe uma nova atualização ?
Nginx
HTTP_PUSH_MODULE
Utiliza uma solução um pouco melhor de pooling que é o
Long Pooling é o cliente que fica perguntando e o server não
responde a não ser que tenha a resposta!
Legal tudo isso !
Mas então qual é a solução para
essa questão dos dados estarem
em real-time para mais de um
local de conexão ?
WebSockets !
WebSocket, é uma tecnologia que
permite comunicação
bidirecional por canais full-duplex
sobre um único soquete TCP !
Soluções que você pode utilizar ?
2.
Por que utilizar o
Pusher ?
Pusher !
Pusher é muito simples de utilizar
basta você criar sua conta no
Pusher.
Em seguida basta você consumir
a API do Pusher que já adiciona
funcionalidade de escala em
tempo real para aplicações Web e
Mobile !
Vamos a um exemplo de criação
de APP Pusher!
3.
Por que utilizar o
Socket.IO ?
11,707
Quantidade de repositórios GitHub que
utilizam Socket.IO!
“Socket.io diferente do seu primo Pusher não é pago
porém toda a gestão do Servidor de Socket é seu, por
exemplo, na Amazon é mais interessante você utilizar
o novo Load Balancer para o Socket.IO pois já possui
suporte a WebSockets e HTTP2!
Show Me
The Code - Chat com Socket !
Legal tudo isso !
Mas e o PHP ? - Repare que ao
entrar no chat minhas mensagens
não são persistidas, não existe
lógica de login e entre outros
pontos. E nesse momento, que
entra nosso Back-end com PHP!
“Mas a palestra não é sobre WebRTC ?
Sim, porém saiba que em WebRTC a sigla RTC no
final das contas nada mais é que: Real-time
communication !
“Então saiba que ao trabalhar com aplicações de
comunicação em tempo real todas as ações da sua
aplicação precisam ser executadas em tempo real !
2.
Então o que é
WebRTC ?
Basicamente WebRTC é uma fusão de 2 (duas)
tecnologias: Voip e Web em nosso caso apenas com
um adendo que é simples criar uma comunicação
real-time entre dois navegadores via APIs em
Javascript.
Você já deve ter utilizado sem nem saber a
tecnologia WebRTC, por exemplo, quando utiliza
vídeo com chat no Facebook e quando utiliza o
Google Hangout!
Com essa tecnologia não existe a necessidade de
você ter em sua empresa um especialista em
telefonia eou Voip.
Não existe a necessidade de instalação de nada só o
que você precisa é o Browser do seu cliente com
suporte a WebRTC.
O melhor de tudo na tecnologia WebRTC é o fato
de ser: Open Source.
O que podemos fazer ?
Com o WebRTC podemos além
de trabalhar com vídeo e áudio,
enviar dados, criar jogos,
compartilhamento de tela,
transferência de arquivos,
reconhecimento de voz, projetos
de conferência e entre outros!
▷ Translator
▷ Simple Conferencing
▷ File Sharing
“Aplicações que utilizam a tecnologia WebRTC:
2.
Compatibilidade do
WebRTC ?
A compatibilidade com o Browser surgiu em
meados de 2011 após a compra da empresa Gips
(Global IP Solutions) pela Google.
Google e Mozilla fecharam uma parceria para o
desenvolvimento do motor de WebRTC tanto para
o Firefox quanto para o Chrome, atualmente são os
navegadores que melhor comportam a tecnologia
WebRTC.
Nessa mesma onda veio o Opera que também já
comporta bem o WebRTC.
“Vilões do WebRTC!
Safari - Incompatível - A apple se diz interessada e acham interessante a tecnologia. Por
que não ser compatível ? - Sinceramente eu não sei!
IE (Internet Explorer) - Incompativel - Dispensa explicações!
Edge - Parcialmente compatível - Suporta getUserMedia(). Ou como sempre a Microsoft
gosta de fazer sua próprias implementações você pode utilizar: Ortc.
A compatibilidade no mundo Mobile é possível se
você estiver utilizando Android versão superior a
4.4.4.
Porém já no mundo IOS sofremos com falta de
compatibilidade do WebRTC - Infelizmente!
Já no mundo IOT com Raspberry Pi você já pode
montar seus sistemas com WebRTC sem nenhum
problema !
Para saber verificar se o seu navevador suporta
bem a tecnologia WebRTC utilize o seguinte teste:
https://test.webrtc.org
2.
Arquitetura do
WebRTC ?
Arquitetura do motor WebRTC:
A arquitetura do WebRTC pode variar um pouco
para cada Browser porém a chamada a API não.
A tecnologia do motor WebRTC basicamente
consiste de permitir que você utilize: Pear
connection, voz e video e entre outros.
Devemos então focar nos três principais pilares da
API do motor WebRTC que são:
▷ GetUserMedia()
▷ PeerConnection()
▷ DataChannel()
“GetUserMedia()
Capturar vídeo e áudio por muitos anos foi tarefas únicas de plug-ins de
navegadores que no caso eram: (Flash ou Silverlight).
Graças a API GetUserMedia() podemos facilmente com HTML5 obter a câmera e o
audio do usuário e trabalhar da maneira que você achar mais conveniente.
Vejamos um exemplo de utilização da API GetUserMedia().
http://localhost/phpconference/webrtcAPIS/userMedia
“PeerConnection()
Após a captura do vídeo e áudio é importante conseguir ligar um ponto de conexão
a outro, ou seja, que as pessoas estejam na mesma “sala”.
Antigamente no mundo da telecomunicação isso era feito pela telefonista, em nosso
mundo de telecomunicação em real time a telefonista chama-se: Servidores de Stun
utilizados para encontrar pontos ICE.
Lista de servidores STUN públicos: code.google.com.
Vejamos um exemplo: https://appr.tc
“DataChannel()
Após possuirmos uma comunicação entre os usuários via PeerConnection(), ou
seja, temos um conexão ponta a ponta com o usuário podemos então enviar para ele
além do vídeo e áudio dados de texto via DataChannel().
Para que seja possível enviar os dados lembre-se de que você precisa estar
conectado com a API do PeerConnection() em um servidor de sinal.
Vejamos um exemplo: https://webrtc-chat-demo.herokuapp.com
2.
O que é
Opentok?
OpenTok, é uma plataforma global na nuvem para
integrar vídeo ao vivo, voz, mensagens e
experiências de tela compartilhadas em páginas
web e aplicativos móveis!
A plataforma é dimensionável e personalizável,
permite que você consiga desenvolver todo tipo de
comunicações de vídeo, desde um chat entre duas
pessoas ou mais.
O melhor de tudo você pode iniciar sua empresa de
telecomunicações chamando uma API!
OpenTok Preço
Vejamos um exemplo!
O WMDirect é uma plataforma de conversa online
sem instalação de plugins que utiliza a API do
TokBox para criação de seus eventos!
SDK OpenTok:
▷ Para iniciar o desenvolvimento
com OpenTok você precisa baixar
a biblioteca via Composer da SDK
da seguinte maneira:
○ $ ./composer.phar require
opentok/opentok 2.3.x
▷ Lembre-se você precisa ter uma
conta para poder obter sua:
APIKey e APISecret
SDK OpenTok Session:
▷ O que precisamos agora é
configurar um sessão de acesso a
sala onde irá ocorrer o nosso
evento, ou seja, funciona como
login da sala onde a reunião
efetivamente será feita.
SDK OpenTok Token:
▷ Precisamos gerar um Token por
usuário sendo assim cada usuário
manter um token de acesso para a
sessão de sala que foi criada.
▷ Basicamente imagine que a sessão
do TokBOX é central telefonica da
sala e que os tokens são os
telefones que se ligam a essa
sessão de reunião!
Show Me
The Code - OpenTok SDK PHP!
Obrigado!
Perguntas?
Meus contatos novamente:
@mdba_araujo
michaeldouglas010790@gmail.com

More Related Content

What's hot

Mroonga開発者が来たぞ!
Mroonga開発者が来たぞ!Mroonga開発者が来たぞ!
Mroonga開発者が来たぞ!Kouhei Sutou
 
[OpenStack Days Korea 2016] Track3 - VDI on OpenStack with LeoStream Connecti...
[OpenStack Days Korea 2016] Track3 - VDI on OpenStack with LeoStream Connecti...[OpenStack Days Korea 2016] Track3 - VDI on OpenStack with LeoStream Connecti...
[OpenStack Days Korea 2016] Track3 - VDI on OpenStack with LeoStream Connecti...OpenStack Korea Community
 
Source monitorと複雑度のはなし
Source monitorと複雑度のはなしSource monitorと複雑度のはなし
Source monitorと複雑度のはなしaomori ringo
 
kube-system落としてみました
kube-system落としてみましたkube-system落としてみました
kube-system落としてみましたShuntaro Saiba
 
デスクトップ仮想化入門 VMware ESXi + XenDesktop 7 編
デスクトップ仮想化入門 VMware ESXi + XenDesktop 7 編デスクトップ仮想化入門 VMware ESXi + XenDesktop 7 編
デスクトップ仮想化入門 VMware ESXi + XenDesktop 7 編Citrix Systems Japan
 
昨今のストレージ選定のポイントとCephStorageの特徴
昨今のストレージ選定のポイントとCephStorageの特徴昨今のストレージ選定のポイントとCephStorageの特徴
昨今のストレージ選定のポイントとCephStorageの特徴Takuya Utsunomiya
 
“見てわかる” ファイバーチャネルSAN基礎講座(第1弾)~まず理解しよう! 基本の “キ”~
“見てわかる” ファイバーチャネルSAN基礎講座(第1弾)~まず理解しよう! 基本の “キ”~“見てわかる” ファイバーチャネルSAN基礎講座(第1弾)~まず理解しよう! 基本の “キ”~
“見てわかる” ファイバーチャネルSAN基礎講座(第1弾)~まず理解しよう! 基本の “キ”~Brocade
 
우아한오픈소스
우아한오픈소스우아한오픈소스
우아한오픈소스Jun Ho Lee
 
わかった気になるMySQL
わかった気になるMySQLわかった気になるMySQL
わかった気になるMySQLyoku0825
 
Azure VMware Solution (AVS) 概要 (2019年11月版)
Azure VMware Solution (AVS) 概要  (2019年11月版) Azure VMware Solution (AVS) 概要  (2019年11月版)
Azure VMware Solution (AVS) 概要 (2019年11月版) Takamasa Maejima
 
35歳でDBAになった私がデータベースを壊して学んだこと
35歳でDBAになった私がデータベースを壊して学んだこと35歳でDBAになった私がデータベースを壊して学んだこと
35歳でDBAになった私がデータベースを壊して学んだことShinnosuke Akita
 
Fluentdのお勧めシステム構成パターン
Fluentdのお勧めシステム構成パターンFluentdのお勧めシステム構成パターン
Fluentdのお勧めシステム構成パターンKentaro Yoshida
 
Android Push Server & MQTT
Android Push Server & MQTTAndroid Push Server & MQTT
Android Push Server & MQTT광운 이
 
実行統計による実践的SQLチューニング
実行統計による実践的SQLチューニング実行統計による実践的SQLチューニング
実行統計による実践的SQLチューニング健一 三原
 
Open Liberty: オープンソースになったWebSphere Liberty
Open Liberty: オープンソースになったWebSphere LibertyOpen Liberty: オープンソースになったWebSphere Liberty
Open Liberty: オープンソースになったWebSphere LibertyTakakiyo Tanaka
 
Fibre Channel 基礎講座
Fibre Channel 基礎講座Fibre Channel 基礎講座
Fibre Channel 基礎講座Brocade
 
VMworld 2013: VMware vSphere Replication: Technical Walk-Through with Enginee...
VMworld 2013: VMware vSphere Replication: Technical Walk-Through with Enginee...VMworld 2013: VMware vSphere Replication: Technical Walk-Through with Enginee...
VMworld 2013: VMware vSphere Replication: Technical Walk-Through with Enginee...VMworld
 
STNSサーバーを書いてみた
STNSサーバーを書いてみたSTNSサーバーを書いてみた
STNSサーバーを書いてみたYoshinori Teraoka
 
NetBackup 8.2 CloudCatalyst構築および復旧ガイド(Amazon S3利用)
NetBackup 8.2 CloudCatalyst構築および復旧ガイド(Amazon S3利用)NetBackup 8.2 CloudCatalyst構築および復旧ガイド(Amazon S3利用)
NetBackup 8.2 CloudCatalyst構築および復旧ガイド(Amazon S3利用)vxsejapan
 
Kubernetes超入門 with java
Kubernetes超入門 with javaKubernetes超入門 with java
Kubernetes超入門 with javaYasunari Tanaka
 

What's hot (20)

Mroonga開発者が来たぞ!
Mroonga開発者が来たぞ!Mroonga開発者が来たぞ!
Mroonga開発者が来たぞ!
 
[OpenStack Days Korea 2016] Track3 - VDI on OpenStack with LeoStream Connecti...
[OpenStack Days Korea 2016] Track3 - VDI on OpenStack with LeoStream Connecti...[OpenStack Days Korea 2016] Track3 - VDI on OpenStack with LeoStream Connecti...
[OpenStack Days Korea 2016] Track3 - VDI on OpenStack with LeoStream Connecti...
 
Source monitorと複雑度のはなし
Source monitorと複雑度のはなしSource monitorと複雑度のはなし
Source monitorと複雑度のはなし
 
kube-system落としてみました
kube-system落としてみましたkube-system落としてみました
kube-system落としてみました
 
デスクトップ仮想化入門 VMware ESXi + XenDesktop 7 編
デスクトップ仮想化入門 VMware ESXi + XenDesktop 7 編デスクトップ仮想化入門 VMware ESXi + XenDesktop 7 編
デスクトップ仮想化入門 VMware ESXi + XenDesktop 7 編
 
昨今のストレージ選定のポイントとCephStorageの特徴
昨今のストレージ選定のポイントとCephStorageの特徴昨今のストレージ選定のポイントとCephStorageの特徴
昨今のストレージ選定のポイントとCephStorageの特徴
 
“見てわかる” ファイバーチャネルSAN基礎講座(第1弾)~まず理解しよう! 基本の “キ”~
“見てわかる” ファイバーチャネルSAN基礎講座(第1弾)~まず理解しよう! 基本の “キ”~“見てわかる” ファイバーチャネルSAN基礎講座(第1弾)~まず理解しよう! 基本の “キ”~
“見てわかる” ファイバーチャネルSAN基礎講座(第1弾)~まず理解しよう! 基本の “キ”~
 
우아한오픈소스
우아한오픈소스우아한오픈소스
우아한오픈소스
 
わかった気になるMySQL
わかった気になるMySQLわかった気になるMySQL
わかった気になるMySQL
 
Azure VMware Solution (AVS) 概要 (2019年11月版)
Azure VMware Solution (AVS) 概要  (2019年11月版) Azure VMware Solution (AVS) 概要  (2019年11月版)
Azure VMware Solution (AVS) 概要 (2019年11月版)
 
35歳でDBAになった私がデータベースを壊して学んだこと
35歳でDBAになった私がデータベースを壊して学んだこと35歳でDBAになった私がデータベースを壊して学んだこと
35歳でDBAになった私がデータベースを壊して学んだこと
 
Fluentdのお勧めシステム構成パターン
Fluentdのお勧めシステム構成パターンFluentdのお勧めシステム構成パターン
Fluentdのお勧めシステム構成パターン
 
Android Push Server & MQTT
Android Push Server & MQTTAndroid Push Server & MQTT
Android Push Server & MQTT
 
実行統計による実践的SQLチューニング
実行統計による実践的SQLチューニング実行統計による実践的SQLチューニング
実行統計による実践的SQLチューニング
 
Open Liberty: オープンソースになったWebSphere Liberty
Open Liberty: オープンソースになったWebSphere LibertyOpen Liberty: オープンソースになったWebSphere Liberty
Open Liberty: オープンソースになったWebSphere Liberty
 
Fibre Channel 基礎講座
Fibre Channel 基礎講座Fibre Channel 基礎講座
Fibre Channel 基礎講座
 
VMworld 2013: VMware vSphere Replication: Technical Walk-Through with Enginee...
VMworld 2013: VMware vSphere Replication: Technical Walk-Through with Enginee...VMworld 2013: VMware vSphere Replication: Technical Walk-Through with Enginee...
VMworld 2013: VMware vSphere Replication: Technical Walk-Through with Enginee...
 
STNSサーバーを書いてみた
STNSサーバーを書いてみたSTNSサーバーを書いてみた
STNSサーバーを書いてみた
 
NetBackup 8.2 CloudCatalyst構築および復旧ガイド(Amazon S3利用)
NetBackup 8.2 CloudCatalyst構築および復旧ガイド(Amazon S3利用)NetBackup 8.2 CloudCatalyst構築および復旧ガイド(Amazon S3利用)
NetBackup 8.2 CloudCatalyst構築および復旧ガイド(Amazon S3利用)
 
Kubernetes超入門 with java
Kubernetes超入門 with javaKubernetes超入門 with java
Kubernetes超入門 with java
 

Viewers also liked

WebRTC - On Standards, Identity and Telco Strategy
WebRTC - On Standards, Identity and Telco StrategyWebRTC - On Standards, Identity and Telco Strategy
WebRTC - On Standards, Identity and Telco StrategyJose de Castro
 
Implementation Lessons using WebRTC in Asterisk
Implementation Lessons using WebRTC in AsteriskImplementation Lessons using WebRTC in Asterisk
Implementation Lessons using WebRTC in AsteriskMoises Silva
 
WebRTC overview
WebRTC overviewWebRTC overview
WebRTC overviewRouyun Pan
 
Introducing Web 2.0 concepts
Introducing Web 2.0 conceptsIntroducing Web 2.0 concepts
Introducing Web 2.0 conceptsJohn Lewis
 

Viewers also liked (7)

WebRTC - On Standards, Identity and Telco Strategy
WebRTC - On Standards, Identity and Telco StrategyWebRTC - On Standards, Identity and Telco Strategy
WebRTC - On Standards, Identity and Telco Strategy
 
Implementation Lessons using WebRTC in Asterisk
Implementation Lessons using WebRTC in AsteriskImplementation Lessons using WebRTC in Asterisk
Implementation Lessons using WebRTC in Asterisk
 
WebRTC overview
WebRTC overviewWebRTC overview
WebRTC overview
 
WebRTC
WebRTCWebRTC
WebRTC
 
20171005 webrtc
20171005 webrtc20171005 webrtc
20171005 webrtc
 
Introducing Web 2.0 concepts
Introducing Web 2.0 conceptsIntroducing Web 2.0 concepts
Introducing Web 2.0 concepts
 
WebRTC Status Update - 2017Q2
WebRTC Status Update - 2017Q2WebRTC Status Update - 2017Q2
WebRTC Status Update - 2017Q2
 

Similar to Comunicação em tempo real com WebRTC e PHP

TDC2016POA | Trilha Web - Realtime applications com Socket.io
TDC2016POA | Trilha Web - Realtime applications com Socket.ioTDC2016POA | Trilha Web - Realtime applications com Socket.io
TDC2016POA | Trilha Web - Realtime applications com Socket.iotdc-globalcode
 
Rio Info 2010 - Oficina - Oficina Papel Devigner Novidades HTML5 - Ricardo Pa...
Rio Info 2010 - Oficina - Oficina Papel Devigner Novidades HTML5 - Ricardo Pa...Rio Info 2010 - Oficina - Oficina Papel Devigner Novidades HTML5 - Ricardo Pa...
Rio Info 2010 - Oficina - Oficina Papel Devigner Novidades HTML5 - Ricardo Pa...Rio Info
 
Seminário de Desenvolvimento Mobile - Etec Cafelândia
Seminário de Desenvolvimento Mobile - Etec CafelândiaSeminário de Desenvolvimento Mobile - Etec Cafelândia
Seminário de Desenvolvimento Mobile - Etec CafelândiaDiego Cavalca
 
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...Renato Groff
 
WebRTC, muito mais do que "Talking Heads"
WebRTC, muito mais do que "Talking Heads"WebRTC, muito mais do que "Talking Heads"
WebRTC, muito mais do que "Talking Heads"Rui Ribeiro
 
Construindo Chatbots em Node.js
Construindo Chatbots em Node.jsConstruindo Chatbots em Node.js
Construindo Chatbots em Node.jsFelipe Pedroso
 
Ferramentas Livres para Desenvolvimento Web
Ferramentas Livres para Desenvolvimento WebFerramentas Livres para Desenvolvimento Web
Ferramentas Livres para Desenvolvimento Webigorpimentel
 
5 Tecnologias que todo Desenvolvedor Web deveria conhecer - Developers-BR - O...
5 Tecnologias que todo Desenvolvedor Web deveria conhecer - Developers-BR - O...5 Tecnologias que todo Desenvolvedor Web deveria conhecer - Developers-BR - O...
5 Tecnologias que todo Desenvolvedor Web deveria conhecer - Developers-BR - O...Renato Groff
 
São Paulo MuleSoft Meetup - Unwired API Led & Custom Polices
São Paulo MuleSoft Meetup - Unwired API Led & Custom PolicesSão Paulo MuleSoft Meetup - Unwired API Led & Custom Polices
São Paulo MuleSoft Meetup - Unwired API Led & Custom PolicesGuilherme Pereira Silva
 
Software livre - Parte 3
Software livre - Parte 3Software livre - Parte 3
Software livre - Parte 3Fabrício Basto
 

Similar to Comunicação em tempo real com WebRTC e PHP (20)

TDC2016POA | Trilha Web - Realtime applications com Socket.io
TDC2016POA | Trilha Web - Realtime applications com Socket.ioTDC2016POA | Trilha Web - Realtime applications com Socket.io
TDC2016POA | Trilha Web - Realtime applications com Socket.io
 
Rio Info 2010 - Oficina - Oficina Papel Devigner Novidades HTML5 - Ricardo Pa...
Rio Info 2010 - Oficina - Oficina Papel Devigner Novidades HTML5 - Ricardo Pa...Rio Info 2010 - Oficina - Oficina Papel Devigner Novidades HTML5 - Ricardo Pa...
Rio Info 2010 - Oficina - Oficina Papel Devigner Novidades HTML5 - Ricardo Pa...
 
Seminário de Desenvolvimento Mobile - Etec Cafelândia
Seminário de Desenvolvimento Mobile - Etec CafelândiaSeminário de Desenvolvimento Mobile - Etec Cafelândia
Seminário de Desenvolvimento Mobile - Etec Cafelândia
 
HTML5
HTML5HTML5
HTML5
 
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
 
Browser Mobile - Firefox
Browser Mobile - FirefoxBrowser Mobile - Firefox
Browser Mobile - Firefox
 
WebRTC, muito mais do que "Talking Heads"
WebRTC, muito mais do que "Talking Heads"WebRTC, muito mais do que "Talking Heads"
WebRTC, muito mais do que "Talking Heads"
 
Html 5
Html 5Html 5
Html 5
 
Minicurso Intel XDK
Minicurso Intel XDKMinicurso Intel XDK
Minicurso Intel XDK
 
Minicurso Intel XDK
Minicurso Intel XDKMinicurso Intel XDK
Minicurso Intel XDK
 
Construindo Chatbots em Node.js
Construindo Chatbots em Node.jsConstruindo Chatbots em Node.js
Construindo Chatbots em Node.js
 
Html5
Html5Html5
Html5
 
Ferramentas Livres para Desenvolvimento Web
Ferramentas Livres para Desenvolvimento WebFerramentas Livres para Desenvolvimento Web
Ferramentas Livres para Desenvolvimento Web
 
Professor rogerio-apostila
Professor rogerio-apostilaProfessor rogerio-apostila
Professor rogerio-apostila
 
Live Source - Brasil
Live Source - BrasilLive Source - Brasil
Live Source - Brasil
 
5 Tecnologias que todo Desenvolvedor Web deveria conhecer - Developers-BR - O...
5 Tecnologias que todo Desenvolvedor Web deveria conhecer - Developers-BR - O...5 Tecnologias que todo Desenvolvedor Web deveria conhecer - Developers-BR - O...
5 Tecnologias que todo Desenvolvedor Web deveria conhecer - Developers-BR - O...
 
Webinar
WebinarWebinar
Webinar
 
São Paulo MuleSoft Meetup - Unwired API Led & Custom Polices
São Paulo MuleSoft Meetup - Unwired API Led & Custom PolicesSão Paulo MuleSoft Meetup - Unwired API Led & Custom Polices
São Paulo MuleSoft Meetup - Unwired API Led & Custom Polices
 
Software livre - Parte 3
Software livre - Parte 3Software livre - Parte 3
Software livre - Parte 3
 
BrazilJS 2012
BrazilJS 2012BrazilJS 2012
BrazilJS 2012
 

More from Michael Douglas

Por que jenkins se posso usar deployer php
Por que jenkins se posso usar deployer php Por que jenkins se posso usar deployer php
Por que jenkins se posso usar deployer php Michael Douglas
 
Programando php com mais segurança
Programando php com mais segurançaProgramando php com mais segurança
Programando php com mais segurançaMichael Douglas
 
A mágica por trás dos aplicativos ( Api com o Laravel )
A mágica por trás dos aplicativos ( Api com o Laravel )A mágica por trás dos aplicativos ( Api com o Laravel )
A mágica por trás dos aplicativos ( Api com o Laravel )Michael Douglas
 
Trabalhando de forma profissional com silex
Trabalhando de forma profissional com silexTrabalhando de forma profissional com silex
Trabalhando de forma profissional com silexMichael Douglas
 
Cya grunt.js, hello gulp.js
Cya grunt.js, hello gulp.jsCya grunt.js, hello gulp.js
Cya grunt.js, hello gulp.jsMichael Douglas
 
Laravel 5: Entenda o ambiente e a estrutura MVC
 Laravel 5: Entenda o ambiente e a estrutura MVC Laravel 5: Entenda o ambiente e a estrutura MVC
Laravel 5: Entenda o ambiente e a estrutura MVCMichael Douglas
 

More from Michael Douglas (8)

Por que jenkins se posso usar deployer php
Por que jenkins se posso usar deployer php Por que jenkins se posso usar deployer php
Por que jenkins se posso usar deployer php
 
Mysql full text search
Mysql full text searchMysql full text search
Mysql full text search
 
Nodejs e Socket.io
Nodejs e Socket.ioNodejs e Socket.io
Nodejs e Socket.io
 
Programando php com mais segurança
Programando php com mais segurançaProgramando php com mais segurança
Programando php com mais segurança
 
A mágica por trás dos aplicativos ( Api com o Laravel )
A mágica por trás dos aplicativos ( Api com o Laravel )A mágica por trás dos aplicativos ( Api com o Laravel )
A mágica por trás dos aplicativos ( Api com o Laravel )
 
Trabalhando de forma profissional com silex
Trabalhando de forma profissional com silexTrabalhando de forma profissional com silex
Trabalhando de forma profissional com silex
 
Cya grunt.js, hello gulp.js
Cya grunt.js, hello gulp.jsCya grunt.js, hello gulp.js
Cya grunt.js, hello gulp.js
 
Laravel 5: Entenda o ambiente e a estrutura MVC
 Laravel 5: Entenda o ambiente e a estrutura MVC Laravel 5: Entenda o ambiente e a estrutura MVC
Laravel 5: Entenda o ambiente e a estrutura MVC
 

Comunicação em tempo real com WebRTC e PHP

  • 1. Comunicação em tempo real com WebRTC e PHP
  • 2. Eu sou Michael Douglas Barbosa Araujo Criador da Laravel PagSeguro, um dos responsáveis pela Laravel Conference Brasil e Full Stack Developer na Atitude.
  • 3. ▷ http://www.facebook.com.br/groups/silexbrasil ▷ http://www.facebook.com.br/groups/laravelsp ▷ http://www.facebook.com.br/groups/phingbrasil ▷ http://www.facebook.com.br/groups/sonicpibrasil ▷ http://www.facebook.com.br/groups/doctrinebrasil Criador e mantenedor:
  • 5. Livro: Zend Certified Engineer - Descomplicando a certificação PHP. Ao final da palestra 2 pessoas serão sorteadas !
  • 6. Laravel PagSeguro: https://github.com/michaeldouglas/larav el-pagseguro - Atualmente entrando como pacote oficial Pagseguro e Laravel.
  • 7. E concluindo juntamente com o Matheus Marabesi o livro de Laravel pela Novatec!
  • 9. “Geralmente você assim como eu criamos nossas páginas com base no conhecido paradigma de solicitação e resposta do HTTP. O cliente carrega nossa página, em seguida, nada acontece até que o usuário clique na próxima página ?
  • 10. Ajax ! ▷ Por volta de 2005, Ajax começou a deixar a web mais dinâmica! ▷ Mesmo assim, ainda não tínhamos o poder de criar aplicações real-time efetivamente ! ▷ Porém veja existiam mesmo na época outras soluções. Todo mundo aqui conhece o placar uol ?- Quais soluções possuímos ?
  • 11. Apache Pooling Solução que fica a todo momento perguntando, se já existe uma nova atualização ?
  • 12. Nginx HTTP_PUSH_MODULE Utiliza uma solução um pouco melhor de pooling que é o Long Pooling é o cliente que fica perguntando e o server não responde a não ser que tenha a resposta!
  • 13. Legal tudo isso ! Mas então qual é a solução para essa questão dos dados estarem em real-time para mais de um local de conexão ?
  • 14. WebSockets ! WebSocket, é uma tecnologia que permite comunicação bidirecional por canais full-duplex sobre um único soquete TCP ! Soluções que você pode utilizar ?
  • 15. 2. Por que utilizar o Pusher ?
  • 16. Pusher ! Pusher é muito simples de utilizar basta você criar sua conta no Pusher. Em seguida basta você consumir a API do Pusher que já adiciona funcionalidade de escala em tempo real para aplicações Web e Mobile ! Vamos a um exemplo de criação de APP Pusher!
  • 17.
  • 18.
  • 19. 3. Por que utilizar o Socket.IO ?
  • 20. 11,707 Quantidade de repositórios GitHub que utilizam Socket.IO!
  • 21. “Socket.io diferente do seu primo Pusher não é pago porém toda a gestão do Servidor de Socket é seu, por exemplo, na Amazon é mais interessante você utilizar o novo Load Balancer para o Socket.IO pois já possui suporte a WebSockets e HTTP2!
  • 22.
  • 23. Show Me The Code - Chat com Socket !
  • 24. Legal tudo isso ! Mas e o PHP ? - Repare que ao entrar no chat minhas mensagens não são persistidas, não existe lógica de login e entre outros pontos. E nesse momento, que entra nosso Back-end com PHP!
  • 25. “Mas a palestra não é sobre WebRTC ? Sim, porém saiba que em WebRTC a sigla RTC no final das contas nada mais é que: Real-time communication !
  • 26. “Então saiba que ao trabalhar com aplicações de comunicação em tempo real todas as ações da sua aplicação precisam ser executadas em tempo real !
  • 27. 2. Então o que é WebRTC ?
  • 28. Basicamente WebRTC é uma fusão de 2 (duas) tecnologias: Voip e Web em nosso caso apenas com um adendo que é simples criar uma comunicação real-time entre dois navegadores via APIs em Javascript. Você já deve ter utilizado sem nem saber a tecnologia WebRTC, por exemplo, quando utiliza vídeo com chat no Facebook e quando utiliza o Google Hangout!
  • 29. Com essa tecnologia não existe a necessidade de você ter em sua empresa um especialista em telefonia eou Voip. Não existe a necessidade de instalação de nada só o que você precisa é o Browser do seu cliente com suporte a WebRTC. O melhor de tudo na tecnologia WebRTC é o fato de ser: Open Source.
  • 30. O que podemos fazer ? Com o WebRTC podemos além de trabalhar com vídeo e áudio, enviar dados, criar jogos, compartilhamento de tela, transferência de arquivos, reconhecimento de voz, projetos de conferência e entre outros! ▷ Translator ▷ Simple Conferencing ▷ File Sharing
  • 31. “Aplicações que utilizam a tecnologia WebRTC:
  • 33. A compatibilidade com o Browser surgiu em meados de 2011 após a compra da empresa Gips (Global IP Solutions) pela Google. Google e Mozilla fecharam uma parceria para o desenvolvimento do motor de WebRTC tanto para o Firefox quanto para o Chrome, atualmente são os navegadores que melhor comportam a tecnologia WebRTC. Nessa mesma onda veio o Opera que também já comporta bem o WebRTC.
  • 34. “Vilões do WebRTC! Safari - Incompatível - A apple se diz interessada e acham interessante a tecnologia. Por que não ser compatível ? - Sinceramente eu não sei! IE (Internet Explorer) - Incompativel - Dispensa explicações! Edge - Parcialmente compatível - Suporta getUserMedia(). Ou como sempre a Microsoft gosta de fazer sua próprias implementações você pode utilizar: Ortc.
  • 35. A compatibilidade no mundo Mobile é possível se você estiver utilizando Android versão superior a 4.4.4. Porém já no mundo IOS sofremos com falta de compatibilidade do WebRTC - Infelizmente! Já no mundo IOT com Raspberry Pi você já pode montar seus sistemas com WebRTC sem nenhum problema !
  • 36. Para saber verificar se o seu navevador suporta bem a tecnologia WebRTC utilize o seguinte teste: https://test.webrtc.org
  • 39. A arquitetura do WebRTC pode variar um pouco para cada Browser porém a chamada a API não. A tecnologia do motor WebRTC basicamente consiste de permitir que você utilize: Pear connection, voz e video e entre outros. Devemos então focar nos três principais pilares da API do motor WebRTC que são: ▷ GetUserMedia() ▷ PeerConnection() ▷ DataChannel()
  • 40. “GetUserMedia() Capturar vídeo e áudio por muitos anos foi tarefas únicas de plug-ins de navegadores que no caso eram: (Flash ou Silverlight). Graças a API GetUserMedia() podemos facilmente com HTML5 obter a câmera e o audio do usuário e trabalhar da maneira que você achar mais conveniente. Vejamos um exemplo de utilização da API GetUserMedia(). http://localhost/phpconference/webrtcAPIS/userMedia
  • 41. “PeerConnection() Após a captura do vídeo e áudio é importante conseguir ligar um ponto de conexão a outro, ou seja, que as pessoas estejam na mesma “sala”. Antigamente no mundo da telecomunicação isso era feito pela telefonista, em nosso mundo de telecomunicação em real time a telefonista chama-se: Servidores de Stun utilizados para encontrar pontos ICE. Lista de servidores STUN públicos: code.google.com. Vejamos um exemplo: https://appr.tc
  • 42. “DataChannel() Após possuirmos uma comunicação entre os usuários via PeerConnection(), ou seja, temos um conexão ponta a ponta com o usuário podemos então enviar para ele além do vídeo e áudio dados de texto via DataChannel(). Para que seja possível enviar os dados lembre-se de que você precisa estar conectado com a API do PeerConnection() em um servidor de sinal. Vejamos um exemplo: https://webrtc-chat-demo.herokuapp.com
  • 44. OpenTok, é uma plataforma global na nuvem para integrar vídeo ao vivo, voz, mensagens e experiências de tela compartilhadas em páginas web e aplicativos móveis! A plataforma é dimensionável e personalizável, permite que você consiga desenvolver todo tipo de comunicações de vídeo, desde um chat entre duas pessoas ou mais. O melhor de tudo você pode iniciar sua empresa de telecomunicações chamando uma API!
  • 46. Vejamos um exemplo! O WMDirect é uma plataforma de conversa online sem instalação de plugins que utiliza a API do TokBox para criação de seus eventos!
  • 47. SDK OpenTok: ▷ Para iniciar o desenvolvimento com OpenTok você precisa baixar a biblioteca via Composer da SDK da seguinte maneira: ○ $ ./composer.phar require opentok/opentok 2.3.x ▷ Lembre-se você precisa ter uma conta para poder obter sua: APIKey e APISecret
  • 48. SDK OpenTok Session: ▷ O que precisamos agora é configurar um sessão de acesso a sala onde irá ocorrer o nosso evento, ou seja, funciona como login da sala onde a reunião efetivamente será feita.
  • 49. SDK OpenTok Token: ▷ Precisamos gerar um Token por usuário sendo assim cada usuário manter um token de acesso para a sessão de sala que foi criada. ▷ Basicamente imagine que a sessão do TokBOX é central telefonica da sala e que os tokens são os telefones que se ligam a essa sessão de reunião!
  • 50. Show Me The Code - OpenTok SDK PHP!