8000 GitHub - drorgl/coap-packet: Generate and Parse CoAP packets
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

drorgl/coap-packet

 
 

Repository files navigation

CoAP-Packet

Build Status Coverage Status JavaScript Style Guide

CoAP-Packet is a generator and parser of CoAP packets for node.js.

What is CoAP?

Constrained Application Protocol (CoAP) is a software protocol intended to be used in very simple electronics devices that allows them to communicate interactively over the Internet. - Wikipedia

This library follows RFC 7252 and RFC 8132.

It does not provide any CoAP semantics, it just parses the protocol.

CoAP-packet is an OPEN Open Source Project, see the Contributing section to find out what this means.

The library is being tested on Node versions 12, 14, and 16.

Installation

$: npm install coap-packet --save

Basic Example

The following example opens an UDP client and UDP server and sends a CoAP message between them:

const dgram = require('dgram')
const packet = require('coap-packet')
const parse = packet.parse
const generate = packet.generate
const payload = Buffer.from('Hello World')
const message = generate({ payload: payload })
const port = 41234
const client = dgram.createSocket('udp4')
const server = dgram.createSocket('udp4')

server.bind(port, function () {
  client.send(message, 0, message.length, 41234, 'localhost', function (err, bytes) {
    if (err) {
      console.error(err.message)
    }
    client.close()
  })
})

server.on('message', function (data) {
  console.log(parse(data).payload.toString())
  server.close()
})

API

parse(buffer)

The parse function takes a buffer and returns a JS object that follows a particular format.

generate()

The generate function takes a JS object that follows a particular format and transform it into a CoAP packet.

JS packet format

The JS representation of a CoAP packet is:

{
  token: Buffer.alloc(4),
  code: '0.01',
  messageId: 42,
  payload: Buffer.alloc(200),
  options: [{
    name: 'If-Match',
    value: Buffer.alloc(5)
  }, {
    name: 'Uri-Path',
    value: Buffer.from('hello')
  }]
}

Instead of numerical codes, it also supports humanized names, e.g. GET, POST, PUT, DELETE.

Numerical codes can also be specified in HTTP format, like 500 or '404'.

Contributing

CoAP-Packet is an OPEN Open Source Project. This means that:

Individuals making significant and valuable contributions are given commit-access to the project to contribute as they see fit. This project is more like an open wiki than a standard guarded open source project.

See the CONTRIBUTING.md file for more details.

Contributors

Coap-Packet is only possible due to the excellent work of the following contributors:

Matteo CollinaGitHub/mcollinaTwitter/@matteocollina

LICENSE

MIT, see LICENSE.md file.

About

Generate and Parse CoAP packets

Resources

License

Stars

Watchers

Forks

3027

Packages

No packages published

Languages

  • TypeScript 100.0%
0