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.
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+
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
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
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.