Docker Tips And Tricks at the Docke... by Jérôme Petazzoni 30330 views
Docker-hanoi meetup #1: introductio... by Nguyen Anh Tu 22370 views
Continuous Integration using Docker... by B1 Systems GmbH 23986 views
Já ouviu falar de Channels? Não? Nesta talk vamos destrinchar um pouco mais dessa feature que permite requisições assíncronas no Django e que é perfeita para o desenvolvimento de aplicações real time.
1. Django Channels Aplicações real time com Django
2. Quem sou eu? Paula Grangeiro Bacharel em Sistemas de Informação Desenvolvedora de Software Sênior PyLadies e Django Girls Colecionadora de gatos
3. Aplicações Real Time
4. Como funciona a internet ➔ A comunicação é estabelecida entre um cliente e um servidor ◆ Cliente requisita (request) ◆ Servidor responde (response) ➔ Requisições/Respostas síncronas ➔ Possui ciclo de vida
5. Aplicações Real Time ➔ O cliente necessita de uma resposta do servidor em "tempo real". ➔ O cliente precisa se atualizar caso alguma informação mude no servidor. ➔ O cliente precisa manter a comunicação aberta com o servidor indefinidamente, para receber/enviar novos dados.
6. WebSockets ➔ Protocolo HTML5 baseado no TCP ➔ Conexões assíncronas bidirecionais ➔ Permite conexões não criptografadas e criptografadas ◆ ws: e wss: equivalentes à http: e https: ➔ Possui baixa latência ➔ Suportado em: ◆ Internet Explorer 10+ ◆ Mozilla Firefox 4+ ◆ Safari 5+ ◆ Google Chrome 4+ ◆ Opera 11+
7. HTTP vs. WebSocket
9. Django Views Django foi construído em cima do conceito de requisições e respostas da web HTTP, com requisições síncronas que possuem um ciclo de vida.
10. Django Channels ➔ Adiciona ao Django suporte a WebSockets de uma maneira similar às views HTTP ➔ Funciona essencialmente como um task manager ◆ Mensagens que chegam são alocadas em uma fila ◆ A fila pode ser consumida por N consumers
12. Caso de Teste - Aplicação de Chat Online
13. Instalação e Configuração ➔ pip install channels ➔ Caso use Redis ◆ pip install asgi_redis ➔ No settings.py ◆ "channels" in INSTALLED_APPS ◆ Adicionar Redis no CHANNEL_LAYERS
14. Configurando ASGI O arquivo asgi.py deve substituir o wsgi.py criado automaticamente pelo Django no momento de criação do projeto.
15. Levantando o server ➔ daphne chat.asgi:channel_layer --port 8888 ➔ python manage.py runworker
16. Implementação - Backend
17. Arquivo de Rota O arquivo routing.py equivale ao urls.py, nele são descritos cada channel que a aplicação suporta e seus equivalentes consumers.
18. Implementando Consumers Os consumers são equivalentes às views. Eles ouvem um channel em específico e são responsáveis por tratar as mensagens alocadas nele.
19. Implementando Consumers
20. Implementação - Frontend
21. Conexão WebSocket 1. Criamos a conexão via WebSocket. 2. Pra cada submit do form, a mensagem é enviada via WebSocket. 3. Para cada nova mensagem publicada, os clientes que estão conectados no mesmo WebSocket são atualizados.
22. Mas isso Funciona?
23. Referência https://blog.heroku.com/in_deep_with_django_channels_the_future_of_real_time_a pps_in_django https://udgwebdev.com/node-js-para-leigos-explorando-real-time/ http://websocket.org/echo.html http://www.devmedia.com.br/uso-de-websockets-e-html5/32267 https://github.com/jacobian/channels-example https://django-channels-example.herokuapp.com/ https://www.mmobomb.com/review/league-of-angels-2
24. Obrigada! @paulagrangeiro fb.me/paula.grangeiro contato@paulagrangeiro.com.br blog.paulagrangeiro.com.br