Guzmán D. Darío Senior Python Developer Español Hire me
Taller autoguiado

Tiempo real con Django Channels

Paso 02 de 02
Paso 2 de 2

Tu primer Consumer

Un Consumer es a un WebSocket lo que una View es a HTTP. Recibe conexiones, recibe mensajes, y responde. Vamos a escribir uno mínimo que solo eco-responda lo que le manden.

Analogía · La centralita telefónica

Piensa en una View como una secretaria que contesta llamadas: alguien marca, ella responde una pregunta, cuelga. Un Consumer es más como una conversación abierta: la línea queda activa y los dos pueden hablar cuando quieran, hasta que alguno cuelga.

board/consumers.py python
import json
from channels.generic.websocket import AsyncWebsocketConsumer


class EchoConsumer(AsyncWebsocketConsumer):
    async def connect(self):
        await self.accept()
        await self.send(text_data=json.dumps({
            "msg": "¡Bienvenido a la pizarra!"
        }))

    async def receive(self, text_data):
        data = json.loads(text_data)
        await self.send(text_data=json.dumps({
            "msg": f"Recibí: {data}",
        }))

Checkpoint

Si abres la consola de tu navegador en http://127.0.0.1:8000/ y haces new WebSocket("ws://127.0.0.1:8000/ws/board/"), deberías recibir el mensaje "¡Bienvenido a la pizarra!" en pocos segundos.