我有一个django渠道消费者与客户交流。我有一个来自外部API的视图,该视图需要客户端提供一些东西。从这个观点来看,我然后要告诉该消费者通过其套接字向客户端提出请求。
我目前正在探索django rest框架,但目前找不到直接向该消费者询问任何内容的方法。 好吧,我有一个主意,但是它涉及创建另一个套接字并通过通道的通道进行通信。但我希望能摆脱这种超载。
答案 0 :(得分:1)
从评论中的答复看来,您似乎想从DRF视图中通过使用者将消息发送给客户。您可以查看similar question的答案。
首先,您需要在使用者中使用一种方法,将信息发送回客户端:
...
async def send_alert(self, event):
# Send message to WebSocket
await self.send(text_data={
'type': 'alert',
'details': 'An external API api.external.com needs some data from you'
})
...
因此,现在您可以向该方法发送消息。假设客户端已连接到channel1
,则可以在您的视图中执行以下操作:
from channels.layers import get_channel_layer
from asgiref.sync import async_to_sync
...
channel_layer = get_channel_layer()
sync_to_async(channel_layer.send)("channel1", {
"type": "send.alert"
})
...