django channels - aplicações real time com django

24
Django Channels Aplicações real time com Django

Upload: paula-grangeiro

Post on 23-Jan-2018

482 views

Category:

Technology


6 download

TRANSCRIPT

Page 1: Django Channels - Aplicações real time com Django

Django Channels

Aplicações real time com Django

Page 2: Django Channels - Aplicações real time com Django

Quem sou eu?

Paula GrangeiroBacharel em Sistemas de Informação

Desenvolvedora de Software Sênior

PyLadies e Django Girls

Colecionadora de gatos

Page 3: Django Channels - Aplicações real time com Django

Aplicações Real Time

Page 4: Django Channels - Aplicações real time com Django

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

Page 5: Django Channels - Aplicações real time com Django

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.

Page 6: Django Channels - Aplicações real time com Django

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+

Page 7: Django Channels - Aplicações real time com Django

HTTP vs. WebSocket

Page 8: Django Channels - Aplicações real time com Django

Channels

Page 9: Django Channels - Aplicações real time com Django

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.

Page 10: Django Channels - Aplicações real time com Django

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

Page 11: Django Channels - Aplicações real time com Django

Instalação

Page 12: Django Channels - Aplicações real time com Django

Caso de Teste - Aplicação de Chat Online

Page 13: Django Channels - Aplicações real time com Django

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

Page 14: Django Channels - Aplicações real time com Django

Configurando ASGI

O arquivo asgi.py deve substituir o wsgi.py criado automaticamente pelo Django no momento de criação do projeto.

Page 15: Django Channels - Aplicações real time com Django

Levantando o server➔ daphne chat.asgi:channel_layer --port 8888➔ python manage.py runworker

Page 16: Django Channels - Aplicações real time com Django

Implementação-

Backend

Page 17: Django Channels - Aplicações real time com Django

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.

Page 18: Django Channels - Aplicações real time com Django

Implementando ConsumersOs consumers são equivalentes às views.

Eles ouvem um channel em específico e são responsáveis por tratar as mensagens alocadas nele.

Page 19: Django Channels - Aplicações real time com Django

Implementando Consumers

Page 20: Django Channels - Aplicações real time com Django

Implementação-

Frontend

Page 21: Django Channels - Aplicações real time com Django

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.

Page 22: Django Channels - Aplicações real time com Django

Mas isso Funciona?