Django Channels - 当群组成员时无法直接向频道发送消息

Django Channels - Unable To Message Channel Directly When A Member Of A Group

我的应用程序要求能够根据情况向单个频道和频道组发送消息。

但是我遇到了这个问题,如果我将我的频道添加到一个组中,我将无法再直接向他们发送消息。

这里有一些例子:

(无法发送到单个频道):

class NonWorkingExampleConsumer(WebsocketConsumer):
    def connect(self):
        self.group_name = 'group'
        async_to_sync(self.channel_layer.group_add)(
            self.group_name,
            self.channel_name
        )
        
        self.accept()
    
    def disconnect(self, close_code):
        async_to_sync(self.channel_layer.group_discard)(
            self.group_name,
            self.channel_name
        )
        
    def receive(self, text_data):
        async_to_sync(self.channel_layer.send)(
            self.channel_name,
            {
                'type' : 'test',
                'message' : 'Hello World!'
            }
        )
        
    def test(self, event):
        self.send(text_data=json.dumps({
            'message' : event['message']
        }))

(可发单通道):

class WorkingExampleConsumer(WebsocketConsumer):
    def connect(self):       
        self.accept()
    
    def disconnect(self, close_code):
        pass
        
    def receive(self, text_data):
        async_to_sync(self.channel_layer.send)(
            self.channel_name,
            {
                'type' : 'test',
                'message' : 'Hello World!'
            }
        )
        
    def test(self, event):
        self.send(text_data=json.dumps({
            'message' : event['message']
        }))

所以,我的问题是:这是一个错误还是我只是做错了什么?我正在考虑在 Django Channels GitHub 上开一张票,但它建议先检查 Whosebug 以确保它绝对是一个错误而不是用户错误(这是一个真实的可能性!)

我正在使用 Django 3.1 版、Django Channels 3.0.2 版和 Django Channels Redis 3.2.0 版。这是我的 Redis 设置:

CHANNEL_LAYERS = {
    'default': {
        'BACKEND': 'channels_redis.core.RedisChannelLayer',
        'CONFIG': {
            "hosts": [('192.168.15.82', 6379)],
        },
    },
}

非常感谢任何帮助。

我不完全确定为什么,但经过一夜的睡眠和对我的代码进行一些修改后,现在似乎可以按预期工作。

这确实回答了问题,一直以来都是用户错误!

抱歉浪费您的时间,但非常感谢您尝试解决问题。