# Examples ## Simple plain MQTT server ```js import { createServer } from 'node:net' import { Aedes } from 'aedes' const port = 1883 const aedes = await Aedes.createBroker() const server = createServer(aedes.handle) server.listen(port, function () { console.log('server started and listening on port ', port) }) ``` ## CommonJS ```js const { createServer } = require('node:net') const { Aedes } = require('aedes') const aedes = await Aedes.createBroker() const port = 1883 const server = createServer(aedes.handle) server.listen(port, function () { console.log('server started and listening on port ', port) }) ``` ## Simple plain MQTT server using server-factory ```js import { Aedes } from 'aedes' import { createServer } from 'aedes-server-factory' const port = 1883 const aedes = await Aedes.createBroker() const server = createServer(aedes) server.listen(port, function () { console.log('server started and listening on port ', port) }) ``` ## MQTT over TLS / MQTTS ```js import { createServer } from 'node:tls' import { readFileSync } from 'node:fs' import { Aedes } from 'aedes' const port = 8883 const options = { key: readFileSync('YOUR_PRIVATE_KEY_FILE.pem'), cert: readFileSync('YOUR_PUBLIC_CERT_FILE.pem') } const aedes = await Aedes.createBroker() const server = createServer(options, aedes.handle) server.listen(port, function () { console.log('server started and listening on port ', port) }) ``` ## MQTT server over WebSocket ```js import { createServer } from 'node:http' import { Aedes } from 'aedes' import { WebSocketServer, createWebSocketStream } from 'ws' const port = 8888 const aedes = await Aedes.createBroker() const httpServer = createServer() const wss = new WebSocketServer({ server:httpServer }) wss.on('connection', (websocket, req) => { const stream = createWebSocketStream(websocket) aedes.handle(stream, req) }) httpServer.listen(port, function () { console.log('websocket server listening on port ', port) }) ``` ## MQTT server over WebSocket using server-factory ```js import { Aedes } from 'aedes' import { createServer } from 'aedes-server-factory' const port = 8888 const aedes = await Aedes.createBroker() const httpServer = createServer(aedes, { ws: true }) httpServer.listen(port, function () { console.log('websocket server listening on port ', port) }) ``` ## Clusters In order to use Aedes in clusters you have to choose a persistence and an mqemitter that supports clusters. Tested persistence/mqemitters that works with clusters are: - [mqemitter-redis] - [mqemitter-child-process] - [mqemitter-mongodb] - [aedes-persistence-mongodb] - [aedes-persistence-redis] [This](https://github.com/moscajs/aedes/blob/master/examples/clusters/index.js) is an example using [mqemitter-mongodb] and [aedes-persistence-mongodb] [aedes-persistence-mongodb]: https://www.npmjs.com/aedes-persistence-mongodb [aedes-persistence-redis]: https://www.npmjs.com/aedes-persistence-redis [mqemitter-redis]: https://www.npmjs.com/mqemitter-redis [mqemitter-mongodb]: https://www.npmjs.com/mqemitter-mongodb [mqemitter-child-process]: https://www.npmjs.com/mqemitter-child-process