ValueError("No text section for incoming WebSocket frame!") Swift to DRF
Я пытаюсь сделать приложение для обмена сообщениями в реальном времени, используя swift и rest framework от django. Чтобы сделать приложение "в реальном времени", я использую каналы Django.
Сейчас, когда я отправляю данные сообщения потребителю, я получаю ошибку
ValueError("No text section for incoming WebSocket frame!")
Вот мой код django:
class MessageConsumer(AsyncJsonWebsocketConsumer):
#connect to client
async def connect(self):
await self.accept()
await self.send_json(content="Pong")
query_string = self.scope['query_string']
self.conversation_id = int(query_string[16:].strip())
self.new_group_name = 'Conversation_' + str(self.conversation_id)
await self.channel_layer.group_add(self.new_group_name, self.channel_name)
# all_msgs = await self.get_conversation_messages()
# await self.send_json(content=all_msgs)
@database_sync_to_async
def get_conversation_messages(self):
conversation = Conversation.objects.get(conversation_id=self.conversation_id)
messages = conversation.message_set.all()
serializer = GetMessagesSerializer(messages,many=True)
return serializer.data
@database_sync_to_async
def send_message(self, data):
serializer = SendMessageSerializer(data=data)
if serializer.is_valid():
serializer.save()
return serializer.data
raise ValueError('serializer is not valid')
async def receive_json(self, content):
serialized_message = await self.send_message(data=content)
await self.send_json(content=serialized_message)
async def disconnect(self, code):
await self.channel_layer.group_discard(self.new_group_name, self.channel_name)
await self.close()
Вот мой swift-код:
private func encodeMessageData(_ data: SendMessageStruct) -> Data? {
guard let encodedData = try? JSONEncoder().encode(data) else {
print("failed to encode message data")
return nil
}
return encodedData
}
let webSocketMessage = URLSessionWebSocketTask.Message.data(encodedData)
webSocketTask.send(webSocketMessage) { error in
guard error == nil else {
if let error = error {
print("error in websocket task ERROR: \(error.localizedDescription)")
}
completion(.failure(AuthErrors.taskFailed))
return
}
print("sent websocket data")
}
Если кто-нибудь знает, почему я получаю эту ошибку, пожалуйста, сообщите мне. Спасибо!