Застрял с async python, пытаюсь реализовать сервер живого чата
Мне нужна помощь, я не могу заставить функцию chat_message работать вообще, получение работает, но отправка сообщения не вызывает 'type':'chat_message' я пробовал все, я просто не могу заставить ее работать, я хочу, чтобы сообщение отображалось в чате, когда оно получено, а затем chat_message добавлял сообщение в чат, но он не вызывает эту функцию...
consumers.py
import json
from channels.generic.websocket import AsyncWebsocketConsumer
from asgiref.sync import sync_to_async
from .models import Message, Room
from django.contrib.auth.models import User
class ChatConsumer(AsyncWebsocketConsumer):
async def connect(self):
self.room_name = self.scope['url_route']['kwargs']['room_name']
self.room_group_name = 'chat_%s' % self.room_name
await self.channel_layer.group_add(
self.room_name,
self.room_group_name
)
await self.accept()
async def disconnect(self, code):
await self.channel_layer.group_discard(
self.room_name,
self.room_group_name
)
async def receive(self, text_data):
data = json.loads(text_data)
message = data['message']
username = data['username']
room = data['room']
await self.save_message(username,room,message)
await self.channel_layer.group_send(
self.room_group_name,
{
'type': 'chat_message',
'message': message,
'username': username,
'room': room
})
async def chat_message(self, event):
message = event['message']
username = event['username']
room = event['room']
await self.send(text_data=json.dumps({
'message': message,
'username': username,
'room': room
}))
@sync_to_async
def save_message(self, username, room, message):
user = User.objects.get(username=username)
room = Room.objects.get(slug=room)
message = Message.objects.create(user=user, room=room, content=message)
room.py
просто отказывается работать. если я изменю self.send на receive, он работает, но не как живой чат, скорее как обновление для просмотра сообщения... как я могу заставить его работать :(
)