Este repositório mostra uma API de Broker MQTT básico construído usando Nodejs
Instale o Node a partir deste link : https://nodejs.org/.
Após instalar o Node, verifique as suas versões.
node -v
npm -vOutput:
v10.16.0
6.9.0C:\Users\user\Desktop> mkdir api_mqtt
C:\Users\user\Desktop> cd api_mqttmkdir "nome_da_pasta" cria uma nova pasta cd "nome_da_pasta" entra na pasta
C:\Users\user\Desktop\api_mqtt> npm init -yIrá ser gerado um package.json, que é o arquivo de gerenciamento do nosso projeto, onde irá estar listado o autor, dependencias usadas e etc.
{
"name": "api_mqtt",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC"
}Package.json criado
C:\Users\user\Desktop\api_mqtt> npm install mqtt --save
C:\Users\user\Desktop\api_mqtt> npm install express --save
C:\Users\user\Desktop\api_mqtt> npm install corsDepois da instalação ser concluída será adicionado a sessão de dependencies ao nosso package.json:
"dependencies": {
"cors": "^2.8.5",
"express": "^4.17.1",
"mqtt": "^3.0.0"
}Na pasta do projeto, crie um arquivo chamado api_broker.js
Nas primeiras linhas iremos chamar as nossas dependências:
const express = require('express');
const mqtt = require('mqtt');
const cors = require('cors');Agora para realizarmos a conexão com o servidor MQTT você poderá ver neste reposítório
A conexão do broker feita :
const options = {
clientId: "node-user",
username: 'user_name',
password: 'user_pass',
port: 'server_port',
}
const client = mqtt.connect('mqtt://server_adress',options);Criando o nosso cliente responsável pelas requisições da API:
const app = express();client.subscribe('topic');
/*
client.subscribe('topic1');
client.subscribe('topic2');
*/No protocolo HTTP existem diversos tipos de requisições, porém só iremos usar a GET nesta API.
Então criamos uma requisição do tipo GET para a rota / :
app.use(cors());
app.get('/',(req,res) => {
});O app.use(cors()) serve para habilitar o CORS para qualquer cliente que tente realizar uma requisição.
Dentro da nossa requisição, iremos adicionar um publish para o nosso broker:
app.get('/',(req,res) => {
client.publish("topic","this is a message from route '/'");
res.send("Publish made");
});Neste publish enviamos a mensagem this is a message from route '/' para o tópico topic. E sempre que um usuário realizar essa requisição, o publish será feito, e ele tera Output:
Publish madeApós a nossa requisição, adicionamos o app.listen(), para informar qual porta a nossa API estará funcionando:
app.listen(4000,() => {
console.log("Connected to port 4000");
});Para executar a API, abra o seu arquivo package.json e modifique o scrips para:
"scripts": {
"start": "node api_broker.js"
},Com o programa chamado Insomnia, podemos realizar requisições para a nossa API, a fim de testa-lá.
Após abrir o Insomnia, crie uma nova request do tipo GET:

Com a sua API em execução, coloque o seguinte endereço no Insomnia localhost:port, a port usada foi 4000, então temos:
Agora, apenas clicamos em Sende esperamos o resultado:
Pronto, sua API está pronta e testada 😄 !

