Почему мой ESP32 не отправляет полную полезную нагрузку на мой сервер Python [закрыто]Python

Программы на Python
Ответить
Anonymous
 Почему мой ESP32 не отправляет полную полезную нагрузку на мой сервер Python [закрыто]

Сообщение Anonymous »

Недавно я работаю над проектом, в котором ESP32 используется в качестве клиента, а Python FastAPI — в качестве сервера.
После подключения происходит процесс аутентификации, который требует от них взаимодействия с использованием WebSocket (сообщения находятся в формате JSON).
Проблема в том, что ESP32 сообщил, что отправил сообщение:

Код: Выделить всё

{"type":"auth_response","id":"CHY","data":{"hash":"f6bb6993e5a44bcde621d6bdd4a3dcb7fcfa5ac0b9a8137d88bed81510849fed","time":19726}}
но сервер получил только {. Сервер не получил все сообщение, отправленное с ESP32.
Я ожидал, что сервер получит все сообщение, но этого не произошло.
Я использовал Postman для тестирования сервера, и он работает нормально, поэтому я подозреваю, что проблема заключается в ESP32.
Это код для ESP32. (Я использую ArduinoWebsockets от Джила Маймона и arduinoJson v7 от Бенуа Бланшона)

Код: Выделить всё

#include 
#include 
WebSocketsClient webSocket;
String challengeNonce;
void setup() {
webSocket.begin(serverIP, serverPort, serverPath);
webSocket.onEvent(webSocketEvent);
webSocket.setReconnectInterval(5000);
}
void webSocketEvent(WStype_t type, uint8_t *payload, size_t length) {
switch (type) {
...
case WStype_TEXT:
String text = String((char *)payload);
doc.clear();
DeserializationError error = deserializeJson(doc, text);
if (error) {
break;
}
const char *type = doc["type"];
if (strcmp(type, "challenge") == 0) {
challengeNonce = doc["data"].as();
challengeSignal = true;
}
break;
}
}

void loop() {
webSocket.loop();
if (challengeSignal) {
challengeSignal = false;
JsonDocument outDoc;
...
char responseJson[] = "";
serializeJson(outDoc, responseJson);
/*
example of responseJson:
{"type":"auth_response","id":"CHY","data":{"hash":"f6bb6993e5a44bcde621d6bdd4a3dcb7fcfa5ac0b9a8137d88bed81510849fed","time":19726}}
*/
webSocket.sendTXT(responseJson);

}
vTaskDelay(pdMS_TO_TICKS(1));
}

а это код сервера.

Код: Выделить всё

@router.websocket("/ws/data/{client_id}")
async def websocket_data_endpoint(websocket: WebSocket, client_id: str, background: BackgroundTasks):
await websocket.accept()
nonce = secrets.token_hex(128)
payload = {
"type": "challenge",
"data": nonce
}
await websocket.send_json(payload)
try:
data = await websocket.receive_text()
print(data)
...
Я искал относительные проблемы, но не нашел ни одной, а обращение к ИИ все равно не решило проблему.
Я хотел бы знать, знает ли кто-нибудь, как это исправить. Спасибо.

Подробнее здесь: https://stackoverflow.com/questions/798 ... hon-server
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»