Tengo esta señal para enviar un evento cuando se crea un nuevo mensaje.
from django.db.models.signals import post_save from channels.layers import get_channel_layer from asgiref.sync import async_to_sync from django.dispatch import receiver from .serializers import MessageSerializer from base.models import Message @receiver(post_save, sender=Message) def new_message(sender, instance, created, **kwargs): channel_layer = get_channel_layer() if created: chat_group = instance.channel.chat_group for member in chat_group.members: async_to_sync(channel_layer.send)( f"User-{member.user.id}", { "type": "chat_message_create", "payload": MessageSerializer(instance).data, }, ) esto es los consumers.py
import json from channels.generic.websocket import WebsocketConsumer from api.serializers import UserSerializer class ChatConsumer(WebsocketConsumer): def connect(self): user = self.scope["user"] self.channel_name = f"User-{user.id}" self.send(text_data=json.dumps(UserSerializer(user).data)) def disconnect(self, close_code): pass def chat_message_create(self, event): print("Created") self.send(text_data=json.dumps(event["payload"])) Cuando creo un nuevo mensaje en el panel de administración, se llama a la señal, pero no se envía a través del websocket, y las impresiones de depuración en ChatConsumer.chat_message_create ni siquiera se imprimirán.
Se solucionó el problema, modifiqué los Consumidores para usar Grupos en lugar de canales individuales