O documento apresenta técnicas de aplicações em tempo real como polling, long polling, Server Sent Events e websockets. Ele também discute como implementar aplicações em tempo real com PHP usando o framework Ratchet. O autor demonstra ao vivo o desenvolvimento de um chat usando essas tecnologias.
A evolução da plataforma .NET: passado, presente e futuro | Baixada NERD - No...Renato Groff
Slides de apresentação realizada em evento online promovido pela comunidade Baixada NERD no dia 14/11/2020 (sábado). A palestra abordou a evolução da plataforma .NET e de tecnologias como C#, ASP.NET e Visual Studio ao longo das últimas 2 décadas.
.NET: passado, presente e futuro | Semana FCI 2020 - MackenzieRenato Groff
Apresentação o passado, o presente e o futuro da plataforma .NET (incluindo tecnologias como C#, Visual Studio, Visual Studio Code, Microsoft Azure). Palestra realizada em 16/10/2020 durante a Semana da Faculdade de Computação e Informática da Universidade Mackenzie em São Paulo-SP.
Usando websockets para se comunicar em tempo real entre o navegador e o Android.
Por que iríamos querer fazer isso? Uma vez tendo um backend em tempo real pode ser reutilizado para todas as plataformas, mantendo a arquitectura simples, podendo assim adicionar um cliente nativo para um serviço de web existente que já usa websockets, sem ter que mudar coisas no backend.
Se tudo der certo controlamos um objeto no navegador pelo smartphone.
A evolução da plataforma .NET: passado, presente e futuro | Baixada NERD - No...Renato Groff
Slides de apresentação realizada em evento online promovido pela comunidade Baixada NERD no dia 14/11/2020 (sábado). A palestra abordou a evolução da plataforma .NET e de tecnologias como C#, ASP.NET e Visual Studio ao longo das últimas 2 décadas.
.NET: passado, presente e futuro | Semana FCI 2020 - MackenzieRenato Groff
Apresentação o passado, o presente e o futuro da plataforma .NET (incluindo tecnologias como C#, Visual Studio, Visual Studio Code, Microsoft Azure). Palestra realizada em 16/10/2020 durante a Semana da Faculdade de Computação e Informática da Universidade Mackenzie em São Paulo-SP.
Usando websockets para se comunicar em tempo real entre o navegador e o Android.
Por que iríamos querer fazer isso? Uma vez tendo um backend em tempo real pode ser reutilizado para todas as plataformas, mantendo a arquitectura simples, podendo assim adicionar um cliente nativo para um serviço de web existente que já usa websockets, sem ter que mudar coisas no backend.
Se tudo der certo controlamos um objeto no navegador pelo smartphone.
Minicurso sobre as tecnologias WCF e Web API - 2o. MSP Coding DayRenato Groff
Slides de apresentação realizada durante o 2o. MSP Coding Day, evento realizado em São Vicente no dia 26/03/2016.
Tópicos abordados:
- Criando um serviço WCF
- Consumindo um serviço WCF
- Criando um serviço Web API
- Consumindo um serviço Web API via WebApi.Client
- Consumindo um serviço Web API via RestSharp
- Consumindo um serviço Web API via JavaScript
Confira os slides do Workshoo Hands-On do APIX 2018 realizado pela Sensedia. Nessa atividade, foram abordados todos os temas envolvendo uma aplicação para detecção de fraudes em tempo real, com a utilização de APIs das ELO.
Desenvolvimento de aplicações assíncronas, orientadas a eventos e poliglotas ...Rodrigo Peleias
Palestra sobre o framework Vert.x ministrada em 25/08/2015 no Meetup Java 7, em São Paulo - SP
Palestrante: Rodrigo Peleias - Analista Programador Java
5 Tecnologias que todo Desenvolvedor Web deveria conhecer - Developers-BR - O...Renato Groff
Apresentação sobre o uso de tecnologias gratuitas (Swagger, RabbitMQ, Redis, Docker Compose e JWT) úteis no desenvolvimento de soluções WEb. Palestra realizada em 19/10/2018 em evento promovido pelo grupo Developers-BR em São Paulo-SP.
Minicurso sobre as tecnologias WCF e Web API - 2o. MSP Coding DayRenato Groff
Slides de apresentação realizada durante o 2o. MSP Coding Day, evento realizado em São Vicente no dia 26/03/2016.
Tópicos abordados:
- Criando um serviço WCF
- Consumindo um serviço WCF
- Criando um serviço Web API
- Consumindo um serviço Web API via WebApi.Client
- Consumindo um serviço Web API via RestSharp
- Consumindo um serviço Web API via JavaScript
Confira os slides do Workshoo Hands-On do APIX 2018 realizado pela Sensedia. Nessa atividade, foram abordados todos os temas envolvendo uma aplicação para detecção de fraudes em tempo real, com a utilização de APIs das ELO.
Desenvolvimento de aplicações assíncronas, orientadas a eventos e poliglotas ...Rodrigo Peleias
Palestra sobre o framework Vert.x ministrada em 25/08/2015 no Meetup Java 7, em São Paulo - SP
Palestrante: Rodrigo Peleias - Analista Programador Java
5 Tecnologias que todo Desenvolvedor Web deveria conhecer - Developers-BR - O...Renato Groff
Apresentação sobre o uso de tecnologias gratuitas (Swagger, RabbitMQ, Redis, Docker Compose e JWT) úteis no desenvolvimento de soluções WEb. Palestra realizada em 19/10/2018 em evento promovido pelo grupo Developers-BR em São Paulo-SP.
2. Quem sou eu
Gustavo Castro
Tecnólogo em Sistemas para Internet (IFSUL - Passo Fundo)
Especializando em Ciência de Dados (Unopar - Passo Fundo)
Desenvolvedor PHP
Áreas de interesse: Bots, IoT, Embarcados, Programação paralela e distribuída.
3. Roteiro
● Uma visão sobre aplicações Realtime
● Técnicas Realtime
○ Polling
○ Long Polling
○ Server Sent Events (SSE)
○ Websockets
● PHP - Ratchet
4. Uma visão sobre aplicações Realtime
● O que são aplicações realtime?
○ Dados atualizados frequentemente
○ Velocidade nas interações
○ Sensação que está acontecendo “agora”
5. Uma visão sobre aplicações Realtime
● Principais áreas da utilização de aplicações realtime
○ Controle de tráfego aéreo
○ Bolsa de valores
○ Mensagens instantâneas
○ Transporte compartilhado
6. Técnicas Realtime
● Como funcionam as aplicações
realtime?
○ Como funciona a arquitetura cliente /
servidor?
■ Sempre começa pelo cliente
■ Se estabelece uma conexão
(Handshake)
■ Abre-se um canal para a troca
de mensagens
■ Encerra-se a conexão
Fonte: Do autor
7. Técnicas Realtime
● Polling
○ Cliente realiza requisições em intervalos regulares
○ O servidor retorna cada requisição
○ Não transmite sensação de realtime
■ Percebe-se a robotização no processo devido a
temporização
* handshake omitido no exemplo
Fonte: Do autor
8. Técnicas Realtime
● Long Polling
○ O cliente inicia conexão
○ Servidor mantém a conexão pelo maior tempo
possível
○ Ocorre evento para enviar os dados disponíveis
ou timeout
○ Cliente reinicia conexão imediatamente
* handshake omitido no exemplo
Fonte: Do autor
9. Técnicas Realtime
● Server Sent Events (SSE)
○ Cliente inicia conexão
○ Conexão unidirecional (servidor -> cliente)
○ Servidor envia respostas a cada evento
Fonte: Do autor
10. Técnicas Realtime
● Websocket
○ Cliente inicia conexão
○ Abre-se um canal bidirecional
○ Troca de mensagens até o encerramento
Fonte: Do autor
12. PHP
● “Implementa uma interface de baixo nível para funções de comunicação sockets baseadas
no popular BSD sockets, disponibilizando acionar como um servidor socket ou como um
cliente.” - PHP.net
● PHP 4.1.0 >=
● PHP 5.3.0 movido para o repositório PECL
○ --enable-sockets
17. PHP - Ratchet - Arquitetura
A arquitetura de um APP com Ratchet é basicamente sustentado por duas classes.
A que contém a lógica da aplicação e a que contém o servidor.
18. PHP - Ratchet - Arquitetura
Classe lógica
● Implementa a interface
MessageComponentInterface com os métodos:
○ onOpen(ConnectionInterface)
○ onMessage(ConnectionInterface, string)
○ onClose(ConnectionInterface)
○ onError(ConnectionInterface, Exception)
Classe servidor
● Implementa um webserver IO baseado
em HTTP/Websocket
20. PHP - Ratchet - ConnectionInterface
● ConnectionInterface
○ Atributos
■ ->resourceId
● Id da conexão
○ Métodos
■ ->send(string)
● Envia uma mensagem para o cliente da conexão
■ ->close()
● Encerra a conexão
21. PHP - Consumindo o Websocket
● Javascript
● HTML5
● “O objeto WebSocket provê uma API para criação e gerenciamento de uma conexão
WebSocket com um servidor, bem como o envio e recebimento de dados através dessa
conexão.” - MDN
● Compatibilidade:
Fonte:
https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/WebSocket
22. PHP - Consumindo o Websocket
● Websocket API implementa os seguintes métodos
○ onopen(event)
○ onmessage(event)
○ onclose(event)
○ onerror(event)
25. Desenvolvimento de um chat
● Criar conta no Codenvy
○ https://codenvy.com/
● Montar a estrutura do projeto (script para acelerar o processo)
○ git clone https://github.com/debgustavocastro/oficina-websocket-php.git
○ mv oficina-websocket-php/install.sh ./
○ chmod +x install.sh
○ ./install.sh
27. Desenvolvimento de um chat
● Configuração autoload
○ composer.json
● Atualiza o autoloader
○ ./composer.phar dump-autoload -o
Fonte: Do autor
28. Desenvolvimento de um chat
● Criar classe com regras do chat
○ Implementando a interface MessageComponentInterface
● Criar serviço
○ HTTP Server / WS Server
● Implementar WS na aplicação cliente
Live code….
29. Desenvolvimento de um chat
● Levantando aplicação servidor
○ php chat-service.php
● Ngrok
○ Gera URLs públicas para teste de aplicações
○ ./ngrok http 8070
● Utilizar link do ngrok na aplicação cliente
30. Desenvolvimento de um chat
Fonte disponível em https://github.com/debgustavocastro/chat-websocket-server