После подключения происходит процесс аутентификации, который требует от них взаимодействия с использованием WebSocket (сообщения находятся в формате JSON).
Проблема в том, что ESP32 сообщил, что отправил сообщение:
Код: Выделить всё
{"type":"auth_response","id":"CHY","data":{"hash":"f6bb6993e5a44bcde621d6bdd4a3dcb7fcfa5ac0b9a8137d88bed81510849fed","time":19726}}
Я ожидал, что сервер получит все сообщение, но этого не произошло.
Я использовал 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
Мобильная версия