Testar um broker MQTT se resume a uma pergunta: um cliente consegue se conectar, publicar uma mensagem e recebê-la de volta? Todo o resto — QoS, mensagens retidas, autenticação, latência — se apoia nesse ciclo. Este guia mostra o ciclo de três formas: no navegador, pela linha de comando e em código.
O que verificar ao testar um broker
- Alcançabilidade — o host resolve e a porta está aberta (TCP
1883, TLS8883ou uma porta WebSocket). Veja portas MQTT explicadas. - Handshake — o broker responde ao
CONNECTcom umCONNACKde sucesso. Credenciais ou client IDs errados falham aqui. - Ida e volta — uma mensagem publicada em um tópico é entregue a um assinante do mesmo tópico.
- Recursos dos quais você depende — confirmações de QoS 1/2, mensagens retidas, Last Will, propriedades do MQTT 5.
- Latência e estabilidade — quanto tempo leva a ida e volta e se a conexão sobrevive aos intervalos de keep-alive.
1. Teste um broker MQTT online
O jeito mais rápido é um cliente no navegador. Navegadores só falam MQTT sobre WebSockets, então você precisa do endpoint wss:// do broker — todos os brokers da nossa lista de brokers públicos o exibem.
- Abra o cliente MQTT online e escolha um broker.
- Clique em Connect. Um status verde significa que o CONNACK voltou.
- Assine um tópico exclusivo, como
testmqtt/demo-42/#. - Publique
{"hello":"world"}emtestmqtt/demo-42/helloe veja a mensagem aparecer na lista.
2. Teste pela linha de comando
Os clientes do Mosquitto são as ferramentas de CLI padrão. Abra dois terminais — um assinante e um publicador:
mosquitto_sub -h broker.hivemq.com -p 1883 -t 'testmqtt/demo-42/#' -vmosquitto_pub -h broker.hivemq.com -p 1883 -t 'testmqtt/demo-42/hello' -m 'hello from the CLI'Adicione -u e -P para usuário e senha, -q 1 para testar QoS 1 e --cafile com a porta 8883 para testar TLS.
3. Teste em código
Um script pequeno é o teste mais reproduzível — você pode rodá-lo no CI ou como health check. Aqui está um teste de ida e volta com MQTT.js que também mede a latência:
import mqtt from 'mqtt';
const topic = `testmqtt/${Math.random().toString(16).slice(2, 8)}/ping`;
const client = mqtt.connect('wss://broker.hivemq.com:8884/mqtt');
client.on('connect', () => {
client.subscribe(topic, { qos: 1 }, () => {
const sentAt = Date.now();
client.publish(topic, String(sentAt), { qos: 1 });
});
});
client.on('message', (_topic, payload) => {
console.log(`round trip: ${Date.now() - Number(payload)} ms`);
client.end();
});
client.on('error', (err) => {
console.error('connection failed:', err.message);
process.exit(1);
});Testando QoS, mensagens retidas e Last Will
- QoS — publique com QoS 1 e 2 e confirme que o callback de publicação é disparado. Veja níveis de QoS do MQTT.
- Mensagens retidas — publique com
retain, desconecte, reconecte e assine: o último valor deve chegar imediatamente. Veja mensagens retidas (retained). - Last Will — conecte um cliente com uma mensagem de will, derrube-o sem um disconnect limpo e verifique se os assinantes recebem o will. Veja Last Will and Testament.
Se o teste falhar
Timeouts geralmente indicam uma porta bloqueada ou o transporte errado (porta TCP a partir de um navegador). Recusas imediatas apontam para credenciais, conflitos de client ID ou ACLs. Nosso guia de erros de conexão MQTT associa cada reason code do CONNACK a uma solução.
Perguntas frequentes
Como posso testar um broker MQTT sem instalar nada?
Abra um cliente MQTT online como o TestMQTT, escolha o broker, conecte via WebSockets seguros (wss) e assine um tópico de teste. Publique uma mensagem no mesmo tópico e confirme que ela chega.
Por que um navegador não consegue se conectar à porta 1883?
Navegadores não conseguem abrir sockets TCP brutos. Clientes MQTT web precisam usar o listener WebSocket do broker (geralmente 8083/8084, 8000/8884 ou 443) em vez da porta TCP 1883 ou da porta TLS 8883.
Qual é um bom tópico para o primeiro teste?
Use um tópico exclusivo que dificilmente outra pessoa usará, por exemplo testmqtt/<id-aleatorio>/hello. Em brokers públicos, evite assinar # porque você receberá o tráfego de todos os outros usuários.