gpt4 book ai didi

django-channels - Django Channels 组发送(不包括数据发送者)

转载 作者:行者123 更新时间:2023-12-02 04:27:46 25 4
gpt4 key购买 nike

我使用 Django channel 作为中间代理,它将数据从一个浏览器(父/发送器)传递到其他连接的浏览器(子/接收器)。在我的消费者中,一旦从父浏览器接收到数据,我就会执行 channel_layer.group_send(data) ,以便子浏览器稍后可以从 redis channel 获取数据。

但是,我真正想要的是传递给 channel 的数据应该被所有子浏览器接收,除了父浏览器。我的问题是,如何排除组中的数据发送者?

最佳答案

不幸的是,django channel 不提供这样的过滤。我通过在 chat_message 函数中检查当前连接是否为发件人来解决问题。

    async def receive(self, text_data):
text_data_json = json.loads(text_data)
# Send message to room group

await self.channel_layer.group_send(
self.GROUP_NAME,
{
'type': 'chat_message',
'data': text_data_json,
'sender_channel_name': self.channel_name
}
)

# Receive message from room group
async def chat_message(self, event):

# send to everyone else than the sender
if self.channel_name != event['sender_channel_name']:
await self.send(text_data=json.dumps(event))

关于django-channels - Django Channels 组发送(不包括数据发送者),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52210782/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com