tdc2016poa | trilha web - realtime applications com socket.io

74
Aplicações Real- Time Socket.io Firebase com +

Upload: tdc-globalcode

Post on 20-Feb-2017

54 views

Category:

Education


0 download

TRANSCRIPT

Page 1: TDC2016POA | Trilha Web - Realtime applications com Socket.io

Aplicações Real- Time

Socket.io

Firebase

com

+

Page 2: TDC2016POA | Trilha Web - Realtime applications com Socket.io

+ Software Engineer @Labcodes

+ Design Gráfico @Unibratec

+ Web Apps @Unibratec

+ Google Maps

+ Offline First

+ Cerveja 🍺

📶

Thulio Philipe @thulioph

🕹

💈

📱

Page 3: TDC2016POA | Trilha Web - Realtime applications com Socket.io

+ Software Engineer @Labcodes

+ Design Gráfico @Unibratec

+ Web Apps @Unibratec

+ Google Maps

+ Offline First

+ Cerveja 🍺

📶

Thulio Philipe @thulioph_

🕹

💈

📱

Page 4: TDC2016POA | Trilha Web - Realtime applications com Socket.io
Page 5: TDC2016POA | Trilha Web - Realtime applications com Socket.io
Page 6: TDC2016POA | Trilha Web - Realtime applications com Socket.io
Page 7: TDC2016POA | Trilha Web - Realtime applications com Socket.io

https://flunearyou.org

Page 8: TDC2016POA | Trilha Web - Realtime applications com Socket.io

https://guardioesdasaude.org

Page 9: TDC2016POA | Trilha Web - Realtime applications com Socket.io

https://angrytaxis.com

Page 10: TDC2016POA | Trilha Web - Realtime applications com Socket.io

https://hortalivre.com.br

Page 11: TDC2016POA | Trilha Web - Realtime applications com Socket.io

Fernando

Renato

NicolleDébora

Alessandro

José

(estagiário)

Page 12: TDC2016POA | Trilha Web - Realtime applications com Socket.io

Todos estão com internet?

Page 13: TDC2016POA | Trilha Web - Realtime applications com Socket.io

https://goo.gl/5j2V5m

Page 14: TDC2016POA | Trilha Web - Realtime applications com Socket.io

#tdcpoa#TheDevConf

Page 15: TDC2016POA | Trilha Web - Realtime applications com Socket.io

Protocolos

Page 16: TDC2016POA | Trilha Web - Realtime applications com Socket.io

H T T P- Enviar e receber informações na web

- Request/Response

- Sua versão atual é a 2

- Uma requisição precisa ser transmitida pelo user-agent para que então o servidor responda

Page 17: TDC2016POA | Trilha Web - Realtime applications com Socket.io

https://nandovieira.com.br/entendendo-um-pouco-mais-sobre-o-protocolo-http

H T T P

Page 18: TDC2016POA | Trilha Web - Realtime applications com Socket.io

- Transmissão de dados em ambos os sentidos de forma simultânea.

- Mantém uma conexão persistente no servidor.

- O servidor agora consegue enviar requisições para o navegador e vice-versa sem que ele requisite.

- O handshake se parece com o HTTP, facilitando com que o servidor possa servir HTTP e WebSockets na mesma porta.

WebSocket

Page 19: TDC2016POA | Trilha Web - Realtime applications com Socket.io

https://pt.wikipedia.org/wiki/Duplex

websocket

WebSocket

Page 20: TDC2016POA | Trilha Web - Realtime applications com Socket.io

Real-time

Page 21: TDC2016POA | Trilha Web - Realtime applications com Socket.io
Page 22: TDC2016POA | Trilha Web - Realtime applications com Socket.io

• Utilizava o protocolo HTTP.

• Vários requests eram necessários utilizando setTimeOut() a cada 1s/2s.

• Sobrecarga no servidor, aplicação lenta.

Antes...

Page 23: TDC2016POA | Trilha Web - Realtime applications com Socket.io

http://www.adobe.com/devnet/flashplayer/articles/socket_policy_files.html

Antes...

Page 24: TDC2016POA | Trilha Web - Realtime applications com Socket.io

Hoje.

Page 25: TDC2016POA | Trilha Web - Realtime applications com Socket.io

WebSockets

Page 26: TDC2016POA | Trilha Web - Realtime applications com Socket.io

• É uma API que estabelece uma única conexão via socket entre um client e o server

• Foi padronizado pelo W3C (~ 2012)

• No flash player 9 já tinha implementado WebSockets (~ 2010 )

• Flash Sockets

• Pode ser oferecido com SSL

WebSockets

Page 27: TDC2016POA | Trilha Web - Realtime applications com Socket.io

• Regulamentado pelo IETF (internet engineering task force)

• Imagine uma espécie de túnel entre o cliente e servidor

• WebRTC (web real-time communication)

• ligações de voz, video, chat e transferência de arquivos sem plugin.

WebSockets

Page 28: TDC2016POA | Trilha Web - Realtime applications com Socket.io

https://pt.wikipedia.org/wiki/Duplex

WebSockets

Page 29: TDC2016POA | Trilha Web - Realtime applications com Socket.io

http://caniuse.com/#search=websockets

WebSockets

Page 30: TDC2016POA | Trilha Web - Realtime applications com Socket.io

https://www.ietf.org/

WebSockets

Page 31: TDC2016POA | Trilha Web - Realtime applications com Socket.io

Utilização

Page 32: TDC2016POA | Trilha Web - Realtime applications com Socket.io

https://www.twitter.com/

Page 33: TDC2016POA | Trilha Web - Realtime applications com Socket.io

https://www.twitter.com/

Page 34: TDC2016POA | Trilha Web - Realtime applications com Socket.io

https://www.youtube.com/

Page 35: TDC2016POA | Trilha Web - Realtime applications com Socket.io

https://www.youtube.com/

Page 36: TDC2016POA | Trilha Web - Realtime applications com Socket.io

https://www.google.com/analytics/

Page 37: TDC2016POA | Trilha Web - Realtime applications com Socket.io

https://www.google.com/analytics/

Page 38: TDC2016POA | Trilha Web - Realtime applications com Socket.io

https://gameofbombs.com/

Page 39: TDC2016POA | Trilha Web - Realtime applications com Socket.io

https://github.com/rauchg/weplay

Page 40: TDC2016POA | Trilha Web - Realtime applications com Socket.io
Page 41: TDC2016POA | Trilha Web - Realtime applications com Socket.io

Socket.io

Page 42: TDC2016POA | Trilha Web - Realtime applications com Socket.io

http://socket.io/

Page 43: TDC2016POA | Trilha Web - Realtime applications com Socket.io

• Real-time, baseada em eventos de comunicação bi-direcionais

• Desenvolvido com Javascript utilizando a especificação dos WebSockets

• Funciona em qualquer tipo de dispositivo, mobile ou desktop

• É necessária a implementação tanto do lado servidor como do lado cliente

Socket.io

Page 44: TDC2016POA | Trilha Web - Realtime applications com Socket.io

comoadiciono

no meuprojeto?

Page 45: TDC2016POA | Trilha Web - Realtime applications com Socket.io

• Instale o socket.io

• Acople o socket ao servidor existente (que pode ser um servidor http)

• Utilize listeners (emitindo e recebendo eventos).

Socket.io

Page 46: TDC2016POA | Trilha Web - Realtime applications com Socket.io

Firebase

Page 47: TDC2016POA | Trilha Web - Realtime applications com Socket.io

https://firebase.google.com

Page 48: TDC2016POA | Trilha Web - Realtime applications com Socket.io

https://firebase.google.com/features/

Page 49: TDC2016POA | Trilha Web - Realtime applications com Socket.io

https://firebase.google.com/features/

vamos utilizá-lo

Page 50: TDC2016POA | Trilha Web - Realtime applications com Socket.io

comoadiciono

no meuprojeto?

Page 51: TDC2016POA | Trilha Web - Realtime applications com Socket.io

• Crie um projeto no firebase console

• Configure o firebase na sua aplicação, integrando o script (código fornecido pela documentação)

• Envie os dados e escute as mudanças

Firebase

Page 52: TDC2016POA | Trilha Web - Realtime applications com Socket.io

https://github.com/firebase/quickstart-js/tree/master/database

Page 53: TDC2016POA | Trilha Web - Realtime applications com Socket.io
Page 54: TDC2016POA | Trilha Web - Realtime applications com Socket.io

Firebase Adventures

Page 55: TDC2016POA | Trilha Web - Realtime applications com Socket.io

https://www.youtube.com/watch?v=2mcQ4t_M_CU

Page 56: TDC2016POA | Trilha Web - Realtime applications com Socket.io

Hora do

código

Page 57: TDC2016POA | Trilha Web - Realtime applications com Socket.io

servidorcliente

Page 58: TDC2016POA | Trilha Web - Realtime applications com Socket.io

Instalando

Page 59: TDC2016POA | Trilha Web - Realtime applications com Socket.io

npm install --save socket.io

Page 60: TDC2016POA | Trilha Web - Realtime applications com Socket.io

Instalando

Page 61: TDC2016POA | Trilha Web - Realtime applications com Socket.io

<script src=“https://cdnjs.cloudflare.com/ajax/libs/socket.io/1.4.8/socket.io.min.js”>

</script>

Page 62: TDC2016POA | Trilha Web - Realtime applications com Socket.io

Importando

Page 63: TDC2016POA | Trilha Web - Realtime applications com Socket.io

var io = require('socket.io')();

Page 64: TDC2016POA | Trilha Web - Realtime applications com Socket.io

Eventos

emissor

Page 65: TDC2016POA | Trilha Web - Realtime applications com Socket.io

io.on('connection',function(socket) { io.emit(‘user:connected’, ‘a new user is connected'); });

Page 66: TDC2016POA | Trilha Web - Realtime applications com Socket.io

Javascript

Page 67: TDC2016POA | Trilha Web - Realtime applications com Socket.io

var socket = io();

socket.on('user:connected', function(data) { console.log(data); // a new user is connected });

Page 68: TDC2016POA | Trilha Web - Realtime applications com Socket.io

socket.emit(‘my_event’, ‘my favourite color is red');

var socket = io();

Page 69: TDC2016POA | Trilha Web - Realtime applications com Socket.io

Eventos

receptor

Page 70: TDC2016POA | Trilha Web - Realtime applications com Socket.io

io.on('connection', function (socket) { socket.on(‘my_event', function (data) { console.log(data); // my favourite color is red }); });

io.emit(‘alert’, ‘socket.io is awesome!’);

Page 71: TDC2016POA | Trilha Web - Realtime applications com Socket.io

https://github.com/thulioph/chat-app

Page 72: TDC2016POA | Trilha Web - Realtime applications com Socket.io

https://github.com/thulioph/twitter-realtime

Page 73: TDC2016POA | Trilha Web - Realtime applications com Socket.io

Perguntas?

Page 74: TDC2016POA | Trilha Web - Realtime applications com Socket.io

thulioph.com

Obrigado.