Generate and Parse CoAP packets

npm install coap-packet
3 downloads in the last day
36 downloads in the last week
78 downloads in the last month



CoAP-Packet is an highly experimental generator and parser of CoAP packets.

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 the draft-18 of the standard.

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.

This has been tested only on node v0.10.


$: 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')
    , coapPacket  = require('coap-packet')
    , parse       = packet.parse
    , generate    = packet.generate
    , payload     = new Buffer('Hello World')
    , message     = generate({ payload: payload })
    , port        = 41234
    , client      = dgram.createSocket("udp4")
    , server      = dgram.createSocket("udp4")

server.bind(port, function() {
  client.send(message, 0, message.length, 41234, "localhost", function(err, bytes) {

server.on('message', function(data) {



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


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: new Buffer(4)
  , code: '0.01'
  , messageId: 42
  , payload: new Buffer(200)
  , options: [{
        name: 'If-Match'
      , value: new Buffer(5)
    }, {
        name: 'Uri-Path' 
      , value: new Buffer('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'.


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 file for more details.


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

Matteo CollinaGitHub/mcollinaTwitter/@matteocollina


Copyright (c) 2013 CoAP-Packet contributors (listed above).

Coap-Packet is licensed under an MIT +no-false-attribs license. All rights not explicitly granted in the MIT license are reserved. See the included LICENSE file for more details.

npm loves you