Django Channels: Отправка сообщения извне класса потребителя

Я новичок в Python и Django,
. В настоящее время мне нужно настроить WebSocket сервер, используя Channels.

Я следую коду, приведенному в этой ссылке: Отправка сообщения с помощью Django Channels извне класса Consumer

setting.py

ASGI_APPLICATION = 'myapp.asgi.application'

CHANNEL_LAYERS = {
    'default': {
        'BACKEND': 'channels.layers.InMemoryChannelLayer',
    },
}

Вот код Consumer

import json
from channels.generic.websocket import WebsocketConsumer
from asgiref.sync import async_to_sync

class ZzConsumer(WebsocketConsumer):
    def connect(self):
        self.room_group_name = 'test'

        async_to_sync(self.channel_layer.group_add)(
            self.room_group_name,
            self.channel_name
        )

        self.accept()

    def disconnect(self, code):
        async_to_sync(self.channel_layer.group_discard)(
            self.room_group_name,
            self.channel_name
        )
        print("DISCONNECED CODE: ",code)

    def receive(self, text_data=None, bytes_data=None):
        print(" MESSAGE RECEIVED")
        data = json.loads(text_data)
        message = data['message']
        async_to_sync(self.channel_layer.group_send)(
            self.room_group_name, 
            {
                "type": 'chat_message',
                "message": message
            }
        )
    def chat_message(self, event):
        print("EVENT TRIGERED")
        # Receive message from room group
        message = event['message']
        # Send message to WebSocket
        self.send(text_data=json.dumps({
            'type': 'chat',
            'message': message
        }))

А за пределами потребителя:

    channel_layer = get_channel_layer()
    async_to_sync(channel_layer.group_send)(
        'test',
        {
            'type': 'chat_message',
            'message': "event_trigered_from_views"
        }
    ) 

Ожидаемая логика заключается в том, что я могу получить данные из group_send в receive на классе Consumer. Таким образом, я могу отправить сообщение клиенту.

Однако это не так.

Может ли кто-нибудь здесь знать, чего мне не хватает? Любая помощь будет очень признательна.
Спасибо!

Обновлено:
routing.py

from django.urls import re_path
from . import consumers

websocket_urlpatterns = [
    re_path(r'ws/socket-server/', consumers.ZzConsumer.as_asgi())
]

Мне кажется, вам не хватает аргумента type в методе chat_message. Он должен соответствовать типу в group_send. То есть:

    def chat_message(self, event, type='chat_message'):
        print("EVENT TRIGERED")

Совпадения:

async_to_sync(channel_layer.group_send)(
    'test',
    {
        'type': 'chat_message',
        'message': "event_trigered_from_views"
    }
) 
Вернуться на верх