Junior — Middle
Como implementar suporte a WebSocket num projeto Django?
sobes.tech IA
Resposta da IA
Para implementar suporte para WebSocket no Django, normalmente usa-se a biblioteca Django Channels. Ela amplia a funcionalidade padrão do Django, permitindo trabalhar com o protocolo WebSocket e tarefas assíncronas.
Principais passos:
- Instalar Django Channels:
pip install channels
- No settings.py, indicar a aplicação ASGI:
ASGI_APPLICATION = "your_project.routing.application"
- Criar um arquivo routing.py, onde definir as rotas WebSocket:
from channels.routing import ProtocolTypeRouter, URLRouter
from django.urls import path
from your_app import consumers
application = ProtocolTypeRouter({
"websocket": URLRouter([
path("ws/some_path/", consumers.YourConsumer.as_asgi()),
]),
})
- Criar um consumer — classe que trata os eventos WebSocket:
from channels.generic.websocket import AsyncWebsocketConsumer
import json
class YourConsumer(AsyncWebsocketConsumer):
async def connect(self):
await self.accept()
async def disconnect(self, close_code):
pass
async def receive(self, text_data):
data = json.loads(text_data)
# processamento dos dados
await self.send(text_data=json.dumps({"response": "ok"}))
- Executar o projeto através de um servidor ASGI, por exemplo Daphne:
daphne your_project.asgi:application
Dessa forma, Django Channels permite integrar WebSocket no projeto, mantendo a estrutura habitual do Django.