Websocket com PHP
DICA: PEGUEM CAFÉÉÉÉÉ!
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.
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
MAS, O QUE É WEBSOCKET?
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.
CONEXÃO COM WEBSOCKET
E QUAL O USO?
Perfeito! Entendi o que é; mas, para que serve?
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.
UM POUCO SOBRE HTTP
E OS NAVEGADORES?
Eles já suportam conexões com socket?
SIM, EXCETO O OPERA!
PERFEITO!
Partiu usar websocket nos projetos! Espere, vá com calma, muita calma...
E NO SERVIDOR?
Sim, os servidores podem te impedir de obter e
executar uma aplicação websocket
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
FLUXO DE FUNCIONAMENTO
IMPLEMENTAÇÃO DO RATCHET
VAMOS CODAR! Será bem básico.
✘ 1. Dependência;
✘ 2. Implementação do servidor;
✘ 3. Gerenciador das conexões;
✘ 4. Script de conexão.
1. DEPENDÊNCIA
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.
3. GERENCIADOR DAS CONEXÕES
3. REQUEST PELO SOCKET
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.
MAIS INFORMAÇÕES
Você pode encontrar mais informaçòes sobre o assunto no
meu blog: leonardorifeli.com
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.
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.
SHOW ME THE CODE
VAMOS AO CÓDIGO E EXEMPLOS
RESUMO
O que vimos até agora:
● O que é Websocket;
● Para que serve;
● Sobre HTTP;
● Suporte dos navegadores;
● Sobre o Ratchet;
● Exemplo divertido;
● Riscos.
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.
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
OBRIGADO!
Dúvidas?
Vocês podem me contactar por:
✘ Twitter: @leonardorifeli
✘ E-mail: leonardorifeli@gmail.com
✘ Blog: leonardorifeli.com

Websocket com PHP

  • 1.
  • 2.
  • 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 LeonardoRifeli! ✘ 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
  • 5.
    MAS, O QUEÉ WEBSOCKET?
  • 6.
    DEFINIÇÃO DE WEBSOCKET Websocketssã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.
  • 7.
  • 8.
    E QUAL OUSO? Perfeito! Entendi o que é; mas, para que serve?
  • 9.
    ONDE É UTILIZADOWEBSOCKET? 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.
  • 10.
  • 11.
    E OS NAVEGADORES? Elesjá suportam conexões com socket?
  • 12.
  • 13.
    PERFEITO! Partiu usar websocketnos projetos! Espere, vá com calma, muita calma...
  • 14.
    E NO SERVIDOR? Sim,os servidores podem te impedir de obter e executar uma aplicação websocket
  • 15.
    SOBRE O RATCHET Asaplicaçõ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
  • 16.
  • 17.
    IMPLEMENTAÇÃO DO RATCHET VAMOSCODAR! Será bem básico. ✘ 1. Dependência; ✘ 2. Implementação do servidor; ✘ 3. Gerenciador das conexões; ✘ 4. Script de conexão.
  • 18.
  • 19.
    2. IMPLEMENTAÇÃO DOSERVIDOR ✘ 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.
  • 20.
  • 21.
  • 22.
    4. SCRIPT DECONEXÃ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.
  • 23.
    MAIS INFORMAÇÕES Você podeencontrar mais informaçòes sobre o assunto no meu blog: leonardorifeli.com
  • 24.
    RISCOS Sim, poderão haverriscos 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 ACESSARO 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.
  • 26.
    SHOW ME THECODE VAMOS AO CÓDIGO E EXEMPLOS
  • 27.
    RESUMO O que vimosaté agora: ● O que é Websocket; ● Para que serve; ● Sobre HTTP; ● Suporte dos navegadores; ● Sobre o Ratchet; ● Exemplo divertido; ● Riscos.
  • 28.
    CONCLUSÃO Sempre que precisarde 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 TAGPOR 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 mecontactar por: ✘ Twitter: @leonardorifeli ✘ E-mail: leonardorifeli@gmail.com ✘ Blog: leonardorifeli.com