SlideShare uma empresa Scribd logo
websockets
O que há por aí?
PHP
Marianna Teixeira
Desenvolvedora web
Comunicação em Mídias Digitais
Yuppie Tech
Vittalover
@mariannactx
OLAR!
AGENDA
» O que é websockets?
» Client-side.
» Server-side.
» Opções por aí.
» Tá, mas o que eu escolho pra começar?
1. O que é websockets?
1. O que é websockets?
1. O que é websockets?
1. O que é websockets?
two-way communication between a client running untrusted code
in a controlled environment to a remote host
the security model used for this is the origin-based
the protocol consists of an opening handshake
basic message framing
layered over TCP
not rely on opening multiple HTTP connections
2. Client-side
var connection = new WebSocket('url', [protocols]);
connection.onopen = function () {
connection.send('Ping');
};
connection.onerror = function (error) {
console.log('WebSocket Error ' + error);
};
connection.onmessage = function (e) {
console.log(e.data);
};
3. Server-side (stream)
$server = stream_socket_server($binding);
$client = stream_socket_accept($server);
stream_socket_sendto($client, $responseData);
3. Server-side (socket)
socket_create(AF_INET, SOCK_STREAM, SOL_TCP)
socket_create ( int $domain , int $type , int $protocol )
socket_set_option($this->master, SOL_SOCKET, SO_REUSEADDR, 1)
bool socket_set_option ( resource $socket , int $level , int $optname ,
mixed $optval )
socket_bind($this->master, ‘localhost’, ‘1234’)
bool socket_bind( resource $socket , string $address [, int $port ] )
socket_listen($this->master,20)
bool socket_listen ( resource $socket [, int $backlog ] )
@socket_recv($socket, $buffer, $this->maxBufferSize, 0);
int socket_recv ( resource $socket , string &$buf , int $len , int $flags
)
3. Handshake
cliente
GET /chat HTTP/1.1
Host: example.com:8000
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
Sec-WebSocket-Version: 13
servidor
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept:
s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
Ratchet
socketo.me
phpws
github.com/Devristo/phpws
Brain Sockets
github.com/BrainBoxLabs/brain-
socket
4. Opções por aí
Realtime
realtime.co
Kaazing
websocket.org
nekudo
github.com/nekudo/php-
websocket
websocketd
websocketd.com
React
example.io
Pusher
pusher.com
5. Tá, mas o que eu escolho pra começar: faça você mesmo, bb
» Totalmente 0800!
5. Tá, mas o que eu escolho pra começar: Realtime
» Versão grátis e paga
» Bibliotecas para várias linguagens, inclusive PHP
5. Tá, mas o que eu escolho pra começar: Ratchet
» Usa React PHP
» Trabalha com componentes
Muito obrigada!
Alguma dúvida?
@mariannactx
REFERENCIAS
tools.ietf.org/html/rfc6455
www.leggetter.co.uk/real-time-web-technologies-guide/
Repositorio no github

Mais conteúdo relacionado

Semelhante a O que há de PHP e Websockets por aí?

Semelhante a O que há de PHP e Websockets por aí? (20)

Introdução a Microservices com Node.JS
Introdução  a Microservices com Node.JSIntrodução  a Microservices com Node.JS
Introdução a Microservices com Node.JS
 
IoTizando com JavaScript
IoTizando com JavaScriptIoTizando com JavaScript
IoTizando com JavaScript
 
Palestra criando aplicações seguras com php (2)
Palestra  criando aplicações seguras com php (2)Palestra  criando aplicações seguras com php (2)
Palestra criando aplicações seguras com php (2)
 
Aplicações stateless com PHP e JWT
Aplicações stateless com PHP e JWTAplicações stateless com PHP e JWT
Aplicações stateless com PHP e JWT
 
A internet
A internetA internet
A internet
 
A internet
A internetA internet
A internet
 
Aplicações Realtime com PHP
Aplicações Realtime com PHPAplicações Realtime com PHP
Aplicações Realtime com PHP
 
Aplicações Web Multiplataforma com ASP .NET Core MVC - FATEC
Aplicações Web Multiplataforma com ASP .NET Core MVC - FATECAplicações Web Multiplataforma com ASP .NET Core MVC - FATEC
Aplicações Web Multiplataforma com ASP .NET Core MVC - FATEC
 
Testando a integração com APIs - RSonRails/11
Testando a integração com APIs - RSonRails/11Testando a integração com APIs - RSonRails/11
Testando a integração com APIs - RSonRails/11
 
"Hacking+PHP"
"Hacking+PHP""Hacking+PHP"
"Hacking+PHP"
 
Visão Geral De Desenvolvimento Web Sre 2012
Visão Geral De Desenvolvimento Web   Sre 2012Visão Geral De Desenvolvimento Web   Sre 2012
Visão Geral De Desenvolvimento Web Sre 2012
 
Introdução à Segurança da Informação
Introdução à Segurança da InformaçãoIntrodução à Segurança da Informação
Introdução à Segurança da Informação
 
XSS Desvendado
XSS DesvendadoXSS Desvendado
XSS Desvendado
 
Servlets e JSP
Servlets e JSPServlets e JSP
Servlets e JSP
 
Protocolo Http
Protocolo HttpProtocolo Http
Protocolo Http
 
Fundamentos de Segurança da Informação
Fundamentos de Segurança da InformaçãoFundamentos de Segurança da Informação
Fundamentos de Segurança da Informação
 
HTML 5, CSS 3 e o futuro da Web
HTML 5, CSS 3 e o futuro da WebHTML 5, CSS 3 e o futuro da Web
HTML 5, CSS 3 e o futuro da Web
 
WCF Brasil - Introdução ao WCF
WCF Brasil - Introdução ao WCFWCF Brasil - Introdução ao WCF
WCF Brasil - Introdução ao WCF
 
http https Professor Marlon Sales
http https Professor Marlon Saleshttp https Professor Marlon Sales
http https Professor Marlon Sales
 
Comet - ReverseAjax com DWR - Resumo
Comet - ReverseAjax com DWR - ResumoComet - ReverseAjax com DWR - Resumo
Comet - ReverseAjax com DWR - Resumo
 

O que há de PHP e Websockets por aí?

Notas do Editor

  1. Vai dar tudo certo É uma olhada rápida e levemente detalhada sobre o que é e como trabalhar com comunicação em tempo real usando websockets e php
  2. É importante falar como e porquê conheceu websockets (falar de segunda tela)
  3. O websokets surgiu para resolver alguns problemas. Existem as situações x, y e z que precisam de conexão em tempo real, ou seja, que o cliente seja atualizado sem que atualize a página. A solução mais simples seria o pooling, mas com ela temos os problemas x, y e z.
  4. O long pooling é uma solução melhor. A definição dessa técnica se confunde com o que muita gente chama de COMET. É o que o google usa para atualizar os emails sem que o usuário atualize a página. É o que o facebook utiliza para manter o chat e as outras funções que vão acontecendo sem que a gente saia da página. Falar sobre engenheiro do facebook que disse que só não usam websockets pq não pega em todos os browsers. Apenas nos principais, hehe.
  5. É um protocolo que permite comunicação persistente, bidirecional e full duplex entre cliente e servidor. We do not need to send headers at each message — so no overhead, just data. O origin vem no cabeçalho Emoldura a mensagem de forma que ela alcance o cliente da mesma forma que foi enviada Camada que define quais os protocolos de comunicação a serem utilizados
  6. Faz parte do core do php. PHP 5, 7
  7. Está na PECL, 4, 5 7
  8. Está na PECL, 4, 5 7
  9. Vc viu que é muito fácil a lógica do websockets. Pq não fazer vc mesmo? Esse aqui é uma combinação de 3 ou 4 bibliotecas que achei pelo git hub.
  10. Definição:
  11. Definição: