Django Channels прямые сообщения по каналам
У меня есть базовая настройка, где пользователь подключается к серверу, я сохраняю имя_канала в DB.
А затем я пытаюсь отправить сообщение подключенным пользователям.
class CommandConsumer(WebsocketConsumer):
def connect(self):
Client.objects.create(user=self.scope['user'],channel_name=self.channel_name)
self.accept()
def disconnect(self, close_code):
# Leave room group
#self.channel_layer.group_discard(self.room_group_name, self.channel_name)
Client.objects.filter(channel_name=self.channel_name).delete()
# Receive message from WebSocket
def receive(self, text_data):
destination_clients=Client.objects.filter(user_id__in=userstatuse_userids)
print(destination_clients)
/****self.send(text_data=json.dumps({"type": "chat.message","command":command,"request":request,"response":clubs_data}))
This line works as message is sent to the owner of that channel, the person who sent the message *****//
for each_user in destination_clients:
/*this line however does not send the message to anyone*/
self.channel_layer.send(each_user.channel_name, {"type": "chat.message","text":"test"})
def chat_message(self, event):
# Send message to WebSocket
print("Chat message")
self.send(text_data=json.dumps(event))
Я проверил имена каналов, распечатав их, и они совпадают, так что я не отправляю на неправильные каналы.
Функция сообщений чата никогда не вызывается.
обязательно ли весь потребитель должен быть асинхронным?
Я не хочу реализовывать это с помощью групп. На их сайте есть пример, но я не смог заставить его работать.
https://channels.readthedocs.io/en/stable/topics/channel_layers.html