Django channels websocket не работает должным образом
Я пытаюсь создать простое приложение для чата с использованием каналов django
я создаю потребителя в методе connect, регистрирую всех пользователей в персональной группе и когда я отправляю сообщение, метод recieve должен отправить его обратно в целевую группу пользователей, используя id целевого пользователя, включенного в сообщение. Действие в любом случае не срабатывает
class ChatConsumer(WebsocketConsumer):
def connect(self):
self.user = self.scope["user"]
self.group_name = f"user_{self.user.id}_group"
print("my group: ", self.group_name)
self.accept()
async_to_sync(self.channel_layer.group_add(self.group_name, self.channel_name))
def disconnect(self, close_code):
async_to_sync(self.channel_layer.group_discard(self.group_name, self.channel_name))
def receive(self, text_data):
self.chat_id = self.scope["url_route"]["kwargs"]["chat_id"]
data = json.loads(text_data)
message_content = data["message"]
recipient_user_id = data["recipient_user_id"]
recipient = User.objects.get(id=recipient_user_id)
message = Message.objects.create(
chat_id=self.chat_id, owner=self.user, content=message_content
)
message.recipients.add(recipient)
recipient_group_name = f"user_{recipient_user_id}_group"
async_to_sync(
self.channel_layer.group_send(
recipient_group_name,
{
"type": "chat_message",
"message": message_content,
"owner": self.user.id,
},
)
)
def chat_message(self, event):
message = event["message"]
owner = event["owner"]
self.send(
text_data=json.dumps(
{
"message": message,
"owner": owner,
}
)
)