This repository has been archived by the owner on Feb 11, 2020. It is now read-only.
-
-
Notifications
You must be signed in to change notification settings - Fork 508
MQTT over Websockets
Richard Joyce edited this page Jul 8, 2016
·
7 revisions
Since v0.13.0 Mosca support MQTT over Websocket through the MQTT.js package.
It is very easy to use:
We just use an index.html file to make the calls:
<html>
<head>
<script src="/mqtt.js"></script>
</head>
<body>
<script>
var client = mqtt.connect();
client.subscribe("mqtt/demo");
client.on("message", function(topic, payload) {
alert([topic, payload].join(": "));
client.end();
});
client.publish("mqtt/demo", "hello world!");
</script>
</body>
</html>
We can use Mosca standalone, using the command line:
npm install mosca bunyan -g
mosca -v --http-port 3000 --http-bundle --http-static ./ | bunyan
var mosca = require("mosca");
var server = new mosca.Server({
http: {
port: 3000,
bundle: true,
static: './'
}
});
We can also augment a node HTTP server with MQTT-over-websocket
capabilities, just by calling the Server#attachHttpServer
method,
like so:
var http = require('http')
, httpServ = http.createServer()
, mosca = require('mosca')
, mqttServ = new mosca.Server({});
mqttServ.attachHttpServer(httpServ);
httpServ.listen(3000);
The browserified bundle for MQTT.js for the MQTT websocket client is available in the public folder of the Mosca module. You can serve it using express like so:
var mosca = require("mosca");
var broker = new mosca.Server({});
var express = require("express");
var http = require("http");
var app = express()
var srv = http.createServer(app)
var path = require("path");
app.use(express.static(path.dirname(require.resolve("mosca")) + "/public"))
app.listen(3000)