Ir para o conteúdo

Entrega Incremental e Streaming (@defer)

Servidores GraphQL modernos podem transmitir campos caros ou lentos de forma incremental utilizando a diretiva @defer através de conexões HTTP multipart/mixed.

O ESP32-HTTP-Client processa cada pedaço (chunk) diretamente do fluxo da rede utilizando o BufferedStreamReader, mantendo o consumo de heap extremamente baixo.


Exemplo com @defer

const char* queryComDefer =
    "query GetDashboard {\n"
    "  status\n"
    "  ... @defer {\n"
    "    heavyLogData { timestamp message }\n"
    "  }\n"
    "}";

String statusInicial;

client.graphql("/graphql")
    .query(queryComDefer)
    .getData("status", &statusInicial)
    .onIncremental([](const GraphQLIncrementalPayload& payload) {
      Serial.printf("Chunk recebido para caminho '%s' (hasNext: %d)\n",
                    payload.path.c_str(),
                    payload.hasNext);
    });