NDNts
    Preparing search index...

    Module @ndn/autoconfig

    @ndn/autoconfig

    This package is part of NDNts, Named Data Networking libraries for the modern web.

    This package establishes connection to a NDN network using NDN-FCH service.

    import { fchQuery, connectToNetwork } from "@ndn/autoconfig";

    // other imports for examples
    import { consume } from "@ndn/endpoint";
    import { Forwarder } from "@ndn/fw";
    import assert from "node:assert/strict";

    if (process.env.CI) { process.exit(0); }

    fchQuery function sends a query to NDN-FCH service.

    // The simplest query:
    let res = await fchQuery();
    showFchResponse("closest router", res);
    assert.equal(res.routers.length, 1);

    // Ask for multiple routers:
    res = await fchQuery({ count: 4 });
    showFchResponse("multiple routers", res);
    assert(res.routers.length > 1);

    // Ask for multiple transports:
    res = await fchQuery({ transports: { udp: 4, wss: 2 } });
    showFchResponse("multiple transports", res);
    assert(res.routers.length > 1);

    // Limit to particular network:
    // "ndn" = global NDN testbed
    // "yoursunny" = yoursunny ndn6 network
    res = await fchQuery({ transport: "wss", count: 3, network: "yoursunny" });
    showFchResponse("yoursunny ndn6 network", res);
    assert(res.routers.length > 1);

    // Ask for router at specific location:
    res = await fchQuery({ position: [121.40335, 31.00799] });
    showFchResponse("near @yoursunny's birthplace", res);
    assert.equal(res.routers.length, 1);

    function showFchResponse(title, res) {
    console.log(title, `updated ${res.updated}`);
    console.table(res.routers.map((r) => ({
    transport: r.transport,
    connect: r.connect,
    prefix: r.prefix && `${r.prefix}`,
    })));
    }
    // Connect to NDN network via routers in FCH response, consider default IPv4 gateway as a candidate.
    // Also provide a fallback list in case the above candidates fail.
    // Keep only the fastest face and close others.
    const faces = await connectToNetwork({
    fallback: ["titan.cs.memphis.edu", "vnetlab.gcom.di.uminho.pt"],
    connectTimeout: 3000,
    });
    assert.equal(faces.length, 1);
    const [fastestFace] = faces;
    console.log("fastest face is", `${fastestFace}`);

    // By default, default route "/" is added to the face, so that you can send Interests right away.
    try {
    const t0 = Date.now();
    const data = await consume(`/ndn/edu/memphis/ping/${Math.trunc(Math.random() * 1e8)}`);
    console.log("Interest satisfied", `${data.name}`, `${Date.now() - t0}ms`);
    } catch (err: unknown) {
    console.warn(err);
    }

    fastestFace.close();

    Namespaces

    FchResponse

    Interfaces

    ConnectNetworkOptions
    ConnectRouterOptions
    ConnectRouterResult
    FchRequest
    FchResponse

    Functions

    connectToNetwork
    connectToRouter
    fchQuery