O documento discute Websockets, incluindo sua definição, usos, suporte nos navegadores, biblioteca Ratchet para implementação no servidor, e exemplos de código. Riscos de segurança também são abordados.
3. TÓPICOS
● O que é Websocket;
● Para que serve;
● Sobre HTTP;
● Suporte dos navegadores;
● Sobre o Ratchet;
● Riscos;
● Exemplos e demonstrações;
● Conclusão;
● Dúvidas.
4. HELLO!
Sou o Leonardo Rifeli!
✘ Tenho 20 anos
✘ Eterno estudante no mundo tecnológico
✘ Já fiz mais de 100 sites
✘ Sou programador e sim, eu tomo muito café
✘ Escritor no blog leonardorifeli.com :D
6. DEFINIÇÃO DE WEBSOCKET
Websockets são um full-duplex, conexão persistente bi-direcional de
um navegador web para um servidor. Depois que uma conexão
socket é estabelecida a conexão permanece aberta até que o cliente
ou servidor decida encerrar.
Com esta conexão aberta, o cliente ou servidor pode enviar uma
mensagem a qualquer outro cliente conectado. Sendo assim, neste
momento, uma única aplicação de servidor em execução estará
ciente de todas as conexões abertas, o que lhe permite comunicar
com qualquer outra conexão aberta e a qualquer momento.
8. E QUAL O USO?
Perfeito! Entendi o que é; mas, para que serve?
9. ONDE É UTILIZADO WEBSOCKET?
CHATS
Sim, eles são
desenvolvidos com
comunicação socket.
JOGOS ON-LINE
Aqueles games que
possuem interação em
tempo real dos
jogadores que estão em
uma respectiva fase.
ATUALIZAÇÕES REAL TIME
Toda atualização que ocorre
em tempo real, pode ser
desenvolvida facilmente com
web socket.
Exemplo de uso:
Usuários editando um documento no
Google Docs:
Entre várias aplicações.
14. E NO SERVIDOR?
Sim, os servidores podem te impedir de obter e
executar uma aplicação websocket
15. SOBRE O RATCHET
As aplicações de socket para servidor não tem acompanhado os
navegadores. É aí que surgiu o Ratchet, uma ferramenta fantástica
para a implementação de um servidor, por protocolo TCP. Você pode
iniciar um servidor com o Ratchet I/O Component Server, tendo um
código que implementa o respectivo componente e poderá gerenciar
todas as conexões.
Site: socketo.me
Projeto: github.com/ratchetphp/Ratchet
19. 2. IMPLEMENTAÇÃO DO SERVIDOR
✘ RatchetServerIoServer: Cria um socket aberto para
escutar uma porta específica, para conexões de entrada. Os
eventos são delegados através deste para as aplicações
anexadas.
✘ RatchetHttpHttpServer: Implementa os métodos da
interface MessageComponentInterface e gerencia as
conexões.
✘ RatchetWebSocketWsServer: Um adaptador para lidar
com as requisições e respostas do websocket. Este é o
mediador entre o servidor e o cliente, para lidar com as
mensagens em tempo real, por intermédio de um navegador
web.
✘ HermesBusinessServiceSocketService: Este será nosso
gerenciador de conexões, mensagens, erros e encerramentos.
22. 4. SCRIPT DE CONEXÃO
Repare o ws: Há um novo
esquema de URL para conexões
Websocket, existe também wss:
para uma conexão Websocket
usando para conexões HTTP
seguras.
Com isso, você pode manipular
mensagens para o servidor e, ele
por sua vez, repassar para outras
conexões.
24. RISCOS
Sim, poderão haver riscos dependendo da complexidade da
aplicação e de como o servidor, o gerenciador das conexões e o
script, foram implementados.
Alguns riscos:
✘ Falhas de segurança na comunicação de informações privadas;
✘ Canais implementados incorretamente;
✘ Conexões simultâneas e queda do servidor.
✘ Entre muitos que, podem variar de acordo com a
implementação.
25. ALGORITMO PARA ACESSAR O CHAT
E INTERAGIR
✘ PEGUE O SEU
NOTEBOOK/CELULAR/TABLET/GELADEIRA;
✘ AUMENTE O VOLUME;
✘ CONECTE-SE NA REDE WIFI LOCAL;
✘ ABRA SEU NAVEGADOR (NÃO USE O OPERA MINI);
✘ ACESSE O ENDEREÇO: http://192.168.0.204/tag/chat;
✘ COLOQUE SEU NOME - SELECIONE A SALA 1;
✘ VOCÊ PODE ENVIAR MENSAGENS PARA AS PESSOAS E
BUZINAR PARA ELAS.
27. RESUMO
O que vimos até agora:
● O que é Websocket;
● Para que serve;
● Sobre HTTP;
● Suporte dos navegadores;
● Sobre o Ratchet;
● Exemplo divertido;
● Riscos.
28. CONCLUSÃO
Sempre que precisar de uma conexão quase em tempo real de baixa
latência entre o cliente e o servidor, você terá que implementar
Websocket. Isso pode envolver a reformulação do modo como você
desenvolve as aplicações de servidor com um novo foco em
tecnologias como filas de eventos.
29. AGRADECIMENTOS
✘ A TAG POR ACEITAR A PALESTRA E CEDER O ESPAÇO
✘ TODA A GALERA QUE AJUDOU A ORGANIZAR
✘ O LUIZ E FERNANDO PELO AUXÍLIO TÉCNICO
✘ VOCÊS PELO INTERESSE
✘ E AO LEONARDO PELA PALESTRA! :D
30. OBRIGADO!
Dúvidas?
Vocês podem me contactar por:
✘ Twitter: @leonardorifeli
✘ E-mail: leonardorifeli@gmail.com
✘ Blog: leonardorifeli.com