Davant de varietat de servidors de MQTT triem per a l’exemple el Mosquitto.
1.- Baixar Mosquitto https://mosquitto.org/download
2.- Anar a la carpeta d’instal·lació i buscar mosquitto.conf. En cas que no existeixi, crear-lo:
3.- Posar la següent configuració:
listener 1883
protocol mqtt
listener 9001
protocol websockets
## Authentication ##
allow_anonymous true
# password_file /mosquitto/conf/mosquitto.conf
4. Provar que funciona correctament arrancant-lo des CMD
.\mosquitto.exe -c .\mosquitto.conf -v

Per a comprovar la connexió i el estat del servidor de MQTT podem fer servir un client bàsic de MQTT fet amb HTML. Com per configuració hem activat els websockets no ens farà falta res més que executar aquesta pàgina des el navegador (les llibreries Javascript és consulten a un CDN):
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title>mqtt</title>
<script src="https://unpkg.com/mqtt@4.0.1/dist/mqtt.min.js"></script>
<script>
// An mqtt variable will be initialized globally
console.log(mqtt)
</script>
</head>
<body>
<script>
const options = {
// Clean session
clean: true,
connectTimeout: 4000,
}
const publishMessage = (event) => {
event.preventDefault();
let addr = document.getElementById('addrText').value;
let topic = document.getElementById('topicText').value;
let msg = document.getElementById('messageText').value;
const client = mqtt.connect(addr, options);
client.publish(topic, msg, { qos: 0, retain: false }, function (error) {
if (error) {
console.log(error);
} else {
console.log('Published');
}
})
}
const subscribeMessages = (event) => {
event.preventDefault();
let addr = document.getElementById('addrTextSub').value;
let topic = document.getElementById('topicTextSub').value;
const clientSub = mqtt.connect(addr, options);
clientSub.on('connect', function () {
console.log('Connected')
clientSub.subscribe(topic, function (err) {
if (err) {
console.log(error);
} else {
console.log('Subscribed');
}
})
});
clientSub.on('message', function (topic, message) {
// message is Buffer
console.log();
var table = document.getElementById("messagesReceived");
var row = table.insertRow();
var cell1 = row.insertCell(0);
var cell2 = row.insertCell(1);
cell1.innerHTML = new Date().toLocaleString();
cell2.innerHTML = message.toString();
});
}
</script>
<form onsubmit="return publishMessage(event)">
<fieldset>
<legend>Send message</legend>
<label for="addrText">Address:</label>
<input type="text" id="addrText" name="addrText"><br><br>
<label for="topicText">Topic:</label>
<input type="text" id="topicText" name="topicText"><br><br>
<label for="messageText">Message:</label>
<input type="text" id="messageText" name="messageText"><br><br>
<input type="submit" value="Submit">
</fieldset>
</form>
<br><br>
<form onsubmit="return subscribeMessages(event)">
<fieldset>
<legend>Subscribe</legend>
<label for="addrTextSub">Address:</label>
<input type="text" id="addrTextSub" name="addrTextSub"><br><br>
<label for="topicTextSub">Topic:</label>
<input type="text" id="topicTextSub" name="topicTextSub"><br><br>
<input type="submit" value="Subscribe">
</fieldset>
</form>
<br><br>
<table id="messagesReceived">
<tr>
<th>
Timestamp
</th>
<th>
Message
</th>
</tr>
</table>
</body>
</html>
Amb el codi anterior i els paràmetres de connexió que al ser per web sockets haurem de especificar protocol (wb) i port a l’adreça tal així: wb://localhost:9001. El resultat de enviar un missatge a la subscripció que triem hauria de ser aquesta:

5.- Feta la prova amb la configuració parem el terminal, farem que sigui un servei i així no necessitem tenir una sessió activa. Per a fer-lo cal executar el mosquito.exe install. En el cas que ja estigui instal·lat és recomanable desinstal·lar-lo executant mosquito.exe uninstall . Per a revisar el estat del servei ho podem fer des Control+Alt+Spr, pestanya Serveis i veure tots els serveis buscant el servei Mosquitto Broker:

Si el servei no funcionés reviseu que a les variables de entorn el MOSQUITTO_DIR és el de instal·lació.
Amb això ja podem iniciar les proves de MQTT amb aquest i altres entorns, recordant que els següents passos amb el servidor haurien de ser dotar-lo de seguretat (autenticació i encriptació del canal).