Вы можете использовать канальный слой, который используется для соединения двух или более «Потребителей» вместе. Например, вы хотите создать приложение для комнаты чата и хотите, чтобы несколько пользователей в комнате отправляли друг другу сообщения в режиме «реального времени», а затем вам нужно было связать их, используя слой каналов.
async def start_chat(self, event):
auth_user = self.scope['user']
data = event['data']
recipient_user = data['recipient']
self.chat_room = f'thread_{self.thread.id}'
await self.channel_layer.group_add(
self.chat_room,
self.channel_name
)
async def send_chat_message(self, event):
message = await self.create_message_db(event.get('data'))
message_data = MessageReadOnlySerializer(message).data
# encoding the UUID object to json
uid = message_data['sender']
message_data['sender'] = json.loads(json.dumps(uid, cls=utlis.UUIDEncoder))
await self.channel_layer.group_send(
group=self.chat_room,
message={
'type': 'echo.message',
'data': {
'message': message_data
}
}
)
async def echo_message(self, event):
await self.send_json(event)
приведенный выше код является примером того, как использовать канальный уровень. В функции start_chat мы добавляем двух потребителей в группу . Таким образом, мы установили путь связи между ними, поэтому теперь, когда потребитель вызывает send_chat_message, он вызывает функцию echo_message для обоих потребителей.