This is a demo of denoflare-mqtt, a tiny isomorphic MQTTv5 client running in the browser.
Subscribe and publish to a topic on your broker from standard JavaScript.
The library only implements MQTTv5, and only the features currently implemented by Cloudflare Pub/Sub.
Browser import (ESM)
import { MqttClient } from 'https://cdn.jsdelivr.net/gh/skymethod/denoflare@denoflare-mqtt-v0.0.1/npm/denoflare-mqtt/esm/main.js';
// esm module from npm package source served from jsdelivr with the correct mime type for browsers
Deno import (also supports 'mqtts' over tcp!)
import { MqttClient } from 'https://raw.githubusercontent.com/skymethod/denoflare/denoflare-mqtt-v0.0.1/common/mqtt/mod_deno.ts';
NPM
See the denoflare-mqtt NPM package readme
Usage example
// connect, publish a message, then disconnect const protocol = 'wss'; // also supports 'mqtts' in Deno const hostname = 'my-broker.my-namespace.cloudflarepubsub.com'; const port = 8884; // 8883 for 'mqtts' in Deno const maxMessagesPerSecond = 10; // current pub/sub beta limitation const topic = 'my-topic'; const payload = 'hello world!'; const password = 'MY_JWT_TOKEN'; const client = new MqttClient({ hostname, port, protocol, maxMessagesPerSecond }); client.onMqttMessage = message => { if (message.type === DISCONNECT) { console.log('disconnect', message.reason); } }; console.log('connecting'); await client.connect({ password }); const { clientId, keepAlive } = client; console.log('connected', { clientId, keepAlive }); console.log(`publishing`); await client.publish({ topic, payload }); console.log('disconnecting'); await client.disconnect(); console.log('disconnected');