u8-mqtt
v0.6.6
Published
MQTT client using Uint8Array -- suitable for use in the Browser, NodeJS, and Deno.land.
Downloads
1,945
Readme
u8-mqtt
A JavaScript MQTT client using async/await support QOS-0 and QOS-1. for use in modern ES6 environments: the Browser, NodeJS, and Deno.
- Zero external dependencies.
- Small bundle footprint.
- Tree-shaking friendly.
Use ExpressJS-like router to handle publish messages for matching topics.
- Static (
/foo
,/foo/bar
) - Parameter (
/:title
,/books/:title
,/books/:genre/:title
) - Parameter w/ Suffix (
/movies/:title.mp4
,/movies/:title.(mp4|mov)
) - Optional Parameters (
/:title?
,/books/:title?
,/books/:genre/:title?
) - Wildcards (
*
,/books/*
,/books/:genre/*
)
(Thanks to @lukeed and the excellent regexparam library!)
Docs
- API docs
- See u8-mqtt-packet for details on packet encode and decoding.
Targeting MQTT-3.1.1 (v4) and MQTT-5.0.0 (v5) compatibility.
Use
import mqtt_client from 'https://cdn.jsdelivr.net/npm/u8-mqtt/esm/web/index.js'
// or import mqtt_client from 'u8-mqtt'
let my_mqtt = mqtt_client()
.with_websock('wss://test.mosquitto.org:8081')
// or .with_tcp('tcp://test.mosquitto.org:1883')
.with_autoreconnect()
await my_mqtt.connect()
my_mqtt.subscribe_topic(
'u8-mqtt/demo-simple/:topic',
(pkt, params, ctx) => {
console.log('topic packet', params, pkt, pkt.json())
})
await my_mqtt.json_send(
'u8-mqtt/demo-simple/live',
{ note: 'from README example',
live: new Date().toISOString() })
Module size
Built for small bundle footprint with ES Modules (ESM) using embedded u8-mqtt-packet and regexparam libraries. (See BundlePhobia page)
| module | brotli | minified |
|:------------------------|---------:|---------:|
| u8-mqtt
| 6587 B | 19962 B |
| u8-mqtt/esm/v5.min.js
| 6504 B | 19789 B |
| u8-mqtt/esm/v4.min.js
| 5420 B | 15379 B |
MQTT Client sizes
| minifeid | (x) | Project | Measurement |
|---------:|-----:|----------------|-------------|
| 187.0KB | 12x | MQTT.js | curl -sL https://cdn.jsdelivr.net/npm/[email protected]/dist/mqtt.min.js \| wc -c
| 32.3KB | 2x | paho | curl -sL https://cdn.jsdelivr.net/npm/[email protected]/paho-mqtt.min.js \| wc -c
| 19.8KB | 1.3x | u8-mqtt v5 | cat ./u8-mqtt/esm/web/v5.min.js \| wc -c
| 15.4KB | 1x | u8-mqtt v4 | cat ./u8-mqtt/esm/web/v4.min.js \| wc -c
Prior Art
The u8-mqtt
project was inspired by mqtt and mqtt-packet written for NodeJS.
The codecs of those project are written with a NodeJS ecosystem in mind: Buffer, EventEmitter, Streams.