pamoja for TypeScript - v0.1.17
    Preparing search index...

    Module @pamoja/coap

    Ergonomic facade over the generated CoAP binding.

    CoAP is the transport for links where MQTT is more than the budget allows: it runs over UDP, its headers are a handful of bytes, and a node can fire a reading and forget it rather than holding a session open.

    The reliability choice is re-exported as a runtime Reliability object, because the generated enum is types-only.

    @pamoja/coap

    A CoAP client over UDP with confirmable delivery and observe. One capability of pamoja, one memory-safe Rust core with bindings for TypeScript, Python, and C#.

    API reference read the guide documentation

    npm install @pamoja/coap
    

    This pulls in @pamoja/native, the compiled engine. npm install pamoja is the whole framework in one package.

    The test that runs in CI, spliced here as it ran.

    From bindings/node/guides/coap.ts:

    import { CoapClient, Reliability } from '@pamoja/coap'

    async function main(): Promise<void> {
    // CoAP runs over UDP and opens no session, so connecting only binds a local socket.
    // Nothing is listening on the far side here, and for a non-confirmable send nothing
    // needs to be.
    const reporter = new CoapClient({
    host: '127.0.0.1',
    port: 5683,
    reliability: Reliability.NonConfirmable,
    })
    await reporter.connect()
    console.log(`reporter connected: ${await reporter.isConnected()}`)

    // Non-confirmable delivery is at most once: the datagram leaves unacknowledged, which is
    // what a battery-powered node sends when one missed reading costs nothing.
    await reporter.send('sensors/1/temperature', Buffer.from('21.5'))
    console.log('reporter sent 21.5 and did not wait for an answer')

    // A command is different: it has to arrive. Confirmable delivery retransmits until an
    // acknowledgement comes back. RFC 7252 fixes the defaults at a two-second wait and four
    // retransmissions; both are cut short here so the guide does not sit waiting.
    const commander = new CoapClient({
    host: '127.0.0.1',
    port: 5683,
    reliability: Reliability.Confirmable,
    ackTimeoutMs: 20,
    maxRetransmits: 1,
    })
    await commander.connect()
    try {
    await commander.send('actuators/valve', Buffer.from('open'))
    console.log('commander the valve acknowledged the command')
    } catch (error) {
    console.log(`commander gave up unacknowledged: ${(error as Error).message}`)
    }

    await reporter.disconnect()
    console.log(`reporter disconnected: ${!(await reporter.isConnected())}`)
    }

    main()
    Language Package Reference
    Rust pamoja-coap reference, docs.rs, install
    TypeScript @pamoja/coap reference, install
    Python pamoja-coap reference, install
    C# Pamoja.Coap reference, install

    MIT

    ReliabilityName
    CoapClient
    CoapClientOptions
    TransportMessage
    Reliability
    Reliability