Django 使用Channel 2.0在模型保存时向WebSocket URL上的任何人发送消息

Django 使用Channel 2.0在模型保存时向WebSocket URL上的任何人发送消息,django,django-channels,Django,Django Channels,每次保存一个模型时,我都会尝试以特定的URL向具有打开的websocket连接的所有用户发送一条消息。我正在使用Channels社区项目作为参考,但在这样做时,我必须修改它以使用Channels 2.0 使用在模型的post_saveknocker上触发的信号向组发送通知 在Channel 2.0中,组的处理方式不同,因此方法中的此行Group('myGroup').send({'text':json.dumps(knock)})无效。是否可以修改此行以与下面的消费者一起工作 class Wei

每次保存一个模型时,我都会尝试以特定的URL向具有打开的websocket连接的所有用户发送一条消息。我正在使用Channels社区项目作为参考,但在这样做时,我必须修改它以使用Channels 2.0

使用在模型的
post_save
knocker上触发的信号向组发送通知

在Channel 2.0中,组的处理方式不同,因此方法中的此行
Group('myGroup').send({'text':json.dumps(knock)})
无效。是否可以修改此行以与下面的消费者一起工作

class WeightConsumer(WebsocketConsumer):
    def connect(self):
        self.group_name = 'weight'

        # Join group
        async_to_sync(self.channel_layer.group_add)(
            self.group_name,
            self.channel_name
        )

        self.accept()

    def disconnect(self, close_code):
        # Leave group
        async_to_sync(self.channel_layer.group_discard)(
            self.group_name,
            self.channel_name
        )

    def receive(self, text_data):
        pass

只需利用
get\u channel\u layer()

然后向使用者添加另一种方法

class WeightConsumer(WebsocketConsumer):
    ...

    def receive(self, text_data):
        pass

    def weight_message(self, event):
        weight = event['weight']

        # Send message to websocket
        self.send(text_data=json.dumps({
            'weight': weight
        }))
class WeightConsumer(WebsocketConsumer):
    ...

    def receive(self, text_data):
        pass

    def weight_message(self, event):
        weight = event['weight']

        # Send message to websocket
        self.send(text_data=json.dumps({
            'weight': weight
        }))