Sobes.tech
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:

  1. Instalar Django Channels:
pip install channels
  1. No settings.py, indicar a aplicação ASGI:
ASGI_APPLICATION = "your_project.routing.application"
  1. 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()),
    ]),
})
  1. 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"}))
  1. 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.