KeyError: 'type' в websocket_receive
У меня есть два разных приложения в моем проекте Django. В то время как первое из них (то, в котором возникает ошибка consumers.py) прекрасно работает само по себе, второе продолжает вызывать следующее:
\chat\consumers.py", line 29, in websocket_receive
if event['type'] == 'message':
KeyError: 'type'
chat\consumers.py:
room\consumers.py:
import json
from django.contrib.auth.models import User
from channels.generic.websocket import AsyncWebsocketConsumer
from asgiref.sync import sync_to_async
from .models import Room, RoomMessage
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_group_name,
self.channel_name
)
await self.accept()
async def disconnect(self):
await self.channel_layer.group_discard(
self.room_group_name,
self.channel_name
)
# Receive message from WebSocket
async def receive(self, text_data):
data = json.loads(text_data)
print(data)
roommessage = data['message']
username = data['username']
room = data['room']
await self.save_message(username, room, message)
# Send message to room group
await self.channel_layer.group_send(
self.room_group_name,
{
'type': 'chat_message',
'message': roommessage,
'username': username
}
)
# Receive message from room group
async def chat_message(self, event):
message = event['message']
username = event['username']
# Send message to WebSocket
await self.send(text_data=json.dumps({
'message': roommessage,
'username': username
}))
@sync_to_async
def save_message(self, username, room, message):
user = User.objects.get(username=username)
room = Room.objects.get(slug=room)
RoomMessage.objects.create(user=user, room=room, content=message)
Я пробовал возиться с представлениями, моделями и прочим, но безрезультатно
извините за массивные кодовые блокировки