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")
    }

Если кто-нибудь знает, почему я получаю эту ошибку, пожалуйста, сообщите мне. Спасибо!

Вернуться на верх