npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

coap-router

v1.0.0

Published

A quick demo on how to leverage web router to build CoAP server.

Downloads

8

Readme

coap-router

A quick demo on how to leverage web router to build CoAP (Constrained Application Protocol) server.

1. Motivation

Currently I'm working on a Node.js based IoT (Internet of Things) platform. It allows Node.js powered DTU (Data Transfer Unit) to serve as CoAP server on smart devices like Raspberry PI.

When you design a Node.js based HTTP server, web router is one of your best choices to manage incoming requests from clients. Unfortunately, CoAP doesn't have one like Express Router, this project is to demonstrate how to leverage web router concept to simplify CoAP server implementation.

2.Usage

Inspired by many other JavaScript routers, coap-router does almost the same recursive routing as Express.Router.

Let's take a look at the example.

Example

./server.js
const coap = require("coap");
const app = require("./app");
const server = coap.createServer(app);
server.listen(() => {
    console.log("The CoAP server is now running.\n" + app.help);
});
./app.js
const Router = require("coap-router");
const app = Router();

app.get("/", (req, res) => {
    res.end("Hello, world");
});

app.use("/thermometer", require("./routes/thermometer"));
./routes/thermometer.js
const Router = require("../../lib/router");
const router = Router();
const thermometer = require("../sensors/thermometer");
router.get("/", (req, res) => {
    // route to "/thermometer/"
    writeJSON(res, {
        temperature: thermometer.temperature,
        humidity: thermometer.humidity,
        timestamp: new Date().getTime()
    });
    res.end();
});

router.get("/temperature", (req, res) => {
    // route to "/thermometer/temperature"
    writeJSON(res, {
        temperature: thermometer.temperature,
        timestamp: new Date().getTime()
    });
    res.end();
});

3. How to Install

3.1 Basic Requirements

  • Node.js 6 or above
  • UDP compatible network connected

3.2 Installation

$ npm install

4. How to Test

4.1 Install CoAP Client

Although there're dozens of CoAP clients available, one of the easiest ways is to install Node.js based client named coap-cli.

$ npm install coap-cli -g
$ coap

4.2 Tests

  1. Start example server. By default the CoAP server is listening at port 5683.

    $ npm start

  2. Get literal resource.

    $ coap coap://localhost/

  3. Get JSON resource.

    $ coap coap://localhost/thermometer
    $ coap coap://localhost/thermometer/temperature
    $ coap coap://localhost/thermometer/humidity
  4. Get the latest resource immediately after it has been changed (observing mode).

    $ coap coap://localhost/thermometer/ -o