Um broker MQTT público e gratuito é a forma mais rápida de experimentar o MQTT: sem conta, sem instalação, só um hostname e uma porta. Neste tutorial você vai se conectar ao servidor MQTT público broker.connectmq.com, conhecer as regras e os limites da área pública anônima e rodar exemplos funcionais com o CLI do Mosquitto, Python, Node.js e o navegador. No final, você vai saber exatamente quando chegou a hora de migrar para um broker privado.
Se você é novo no protocolo, comece por O Que É um Broker MQTT? e volte aqui para a parte prática.
O Que É um Broker MQTT Público e Gratuito?
Um servidor MQTT público (ou broker MQTT público) é um broker ao qual qualquer pessoa na internet pode se conectar sem credenciais. Ele serve para aprendizado, demonstrações, protótipos rápidos e depuração de código cliente. Você usa um broker real que fala MQTT 3.1.1 e MQTT 5.0, mas o compartilha com todos que estão testando no mesmo momento.
Esse compartilhamento tem uma consequência importante: tudo o que você publica na área pública pode ser lido por qualquer pessoa. Trate-o como um quadro branco público. Ele é perfeito para um "hello world", simulações de sensores e experimentos com o protocolo, e totalmente inadequado para senhas, dados pessoais ou tráfego de produção.
Detalhes de Conexão do broker.connectmq.com
O servidor MQTT público do ConnectMQ escuta em quatro endpoints. Escolha o que combina com seu cliente e sua rede.
| Protocolo | Porta | URL | Uso típico |
|---|---|---|---|
| MQTT (TCP) | 1883 | mqtt://broker.connectmq.com:1883 | Ferramentas de CLI, microcontroladores, testes rápidos |
| MQTT sobre TLS | 8883 | mqtts://broker.connectmq.com:8883 | Conexões criptografadas a partir de servidores e dispositivos |
| WebSocket | 8083 | ws://broker.connectmq.com:8083/mqtt | Experimentos web locais |
| WebSocket seguro | 8084 | wss://broker.connectmq.com:8084/mqtt | Navegadores e páginas HTTPS |
As portas 8883 e 8084 usam um certificado Let's Encrypt, então os bundles de CA padrão do sistema operacional o validam sem arquivos extras. Se sua rede bloqueia portas incomuns, WSS na 8084 costuma ser o caminho mais fácil, porque para a maioria dos proxies ele se parece com tráfego HTTPS comum.
Regras de Acesso Anônimo
Você não precisa de usuário nem senha. Valem três regras simples:
- Use um client ID não vazio. Conecte sem usuário e senha, mas com um client ID como
demo-7f3a91. Um client ID vazio é rejeitado. Faça com que ele seja único — pela especificação MQTT, uma segunda conexão com o mesmo ID assume a sessão e o primeiro cliente é desconectado. - Use um prefixo de topic único. Coloque tudo sob um prefixo que ninguém vá adivinhar, por exemplo
connectmq/demo/<your-random-id>/.... Isso evita colisões com outros testadores e mantém sua árvore de topics organizada. - Considere que tudo é público. Clientes anônimos caem em uma área pública compartilhada. Clientes públicos só enxergam os topics de outros clientes públicos — eles ficam isolados dos tenants pagantes —, mas dentro da área pública qualquer cliente pode assinar
#e ler suas mensagens.
Um truque prático é gerar um ID aleatório uma vez e reutilizá-lo tanto como base do client ID quanto como prefixo de topic:
export ID=demo-$(openssl rand -hex 3)
echo $ID # e.g. demo-7f3a91
Limites da Área Pública
A área pública é generosa para testes, mas propositalmente limitada para continuar saudável para todos.
| Limite | Valor |
|---|---|
| Tamanho máximo de mensagem | 64 KB |
| Taxa de publicação | 10 mensagens por segundo por cliente |
| Assinaturas | 10 por cliente |
| Profundidade de topic | Máximo de 8 níveis |
| Níveis de QoS | 0, 1 e 2 |
| Retained messages | Suportadas |
Assinaturas com wildcard (+, #) |
Suportadas |
Shared subscriptions ($share/{group}/{filter}) |
Suportadas |
| Session expiry | Até 30 minutos |
Se você ultrapassar uma cota, clientes MQTT 5 recebem um reason code como 0x97 (Quota exceeded) em vez de uma falha silenciosa, o que facilita muito a depuração. Em dúvida sobre qual QoS escolher? Veja Níveis de QoS MQTT Explicados.
Teste o Broker MQTT Público Gratuito com o CLI do Mosquitto
As ferramentas de linha de comando do Eclipse Mosquitto são a forma mais rápida de ver as mensagens circulando. Abra dois terminais.
Terminal 1 — assine o seu prefixo:
mosquitto_sub -h broker.connectmq.com -p 1883 -i $ID-sub -t "connectmq/demo/$ID/#" -v
Terminal 2 — publique uma mensagem:
mosquitto_pub -h broker.connectmq.com -p 1883 -i $ID-pub -t "connectmq/demo/$ID/temperature" -m '{"value": 22.5, "unit": "C"}'
O Terminal 1 imprime o topic seguido do payload. Para usar a porta criptografada, adicione o bundle de CAs do sistema (caminho válido para a maioria das distribuições Linux):
mosquitto_pub -h broker.connectmq.com -p 8883 --capath /etc/ssl/certs -i $ID-tls -t "connectmq/demo/$ID/tls" -m "hello over TLS" -V mqttv5
No Windows ou no macOS, aponte --cafile para um bundle de CAs em PEM (por exemplo, o que vem com o Git for Windows). A flag -V mqttv5 muda o cliente para MQTT 5.0.
Demonstração de Retained Message
Uma retained message é armazenada pelo broker e entregue imediatamente a cada novo subscriber daquele topic. Ela é ideal para valores de "último estado conhecido", como o status de um dispositivo.
# Publica um status retido
mosquitto_pub -h broker.connectmq.com -p 1883 -i $ID-pub -t "connectmq/demo/$ID/status" -m "online" -r -q 1
# Um subscriber novinho o recebe na hora, mesmo tendo sido publicado antes
mosquitto_sub -h broker.connectmq.com -p 1883 -i $ID-late -t "connectmq/demo/$ID/status" -v -C 1 -W 5
# Apaga a retained message publicando um payload retido vazio
mosquitto_pub -h broker.connectmq.com -p 1883 -i $ID-pub -t "connectmq/demo/$ID/status" -n -r
Sempre apague suas retained messages de teste ao terminar — isso mantém a área pública limpa.
Demonstração de Last Will and Testament
Um Last Will é uma mensagem que o broker publica em seu nome se o seu cliente se desconectar inesperadamente. Mantenha o subscriber do Terminal 1 rodando e inicie um "dispositivo" com um will:
mosquitto_sub -h broker.connectmq.com -p 1883 -i $ID-device -t "connectmq/demo/$ID/cmd" -k 5 --will-topic "connectmq/demo/$ID/status" --will-payload "offline" --will-qos 1
Agora mate esse terminal ou o processo (fechar a janela funciona; uma desconexão limpa com Ctrl+C pode não disparar o will em todos os clientes). Em poucos segundos — depois que o keep-alive expirar — o Terminal 1 mostra:
connectmq/demo/demo-7f3a91/status offline
Validamos esses comandos no broker.connectmq.com enquanto escrevíamos este guia.
Exemplo em Python (paho-mqtt 2.x)
Instale o cliente com pip install "paho-mqtt>=2.0". O script abaixo se conecta via TLS, assina o seu prefixo e publica uma leitura.
import json
import ssl
import uuid
import paho.mqtt.client as mqtt
DEVICE_ID = f"demo-{uuid.uuid4().hex[:6]}"
PREFIX = f"connectmq/demo/{DEVICE_ID}"
def on_connect(client, userdata, flags, reason_code, properties):
print(f"Connected: {reason_code}")
client.subscribe(f"{PREFIX}/#", qos=1)
client.publish(f"{PREFIX}/temperature", json.dumps({"value": 21.8}), qos=1)
def on_message(client, userdata, msg):
print(f"{msg.topic} -> {msg.payload.decode()}")
client = mqtt.Client(
mqtt.CallbackAPIVersion.VERSION2,
client_id=DEVICE_ID,
protocol=mqtt.MQTTv5,
)
client.tls_set(cert_reqs=ssl.CERT_REQUIRED) # usa o repositório de CAs do sistema
client.on_connect = on_connect
client.on_message = on_message
client.connect("broker.connectmq.com", 8883, keepalive=30)
client.loop_forever()
Repare que nenhuma chamada a username_pw_set() é necessária na área pública. Para TCP sem criptografia, remova tls_set() e use a porta 1883.
Exemplo em Node.js (MQTT.js via mqtts e wss)
Instale o MQTT.js v5 com npm install mqtt. O mesmo código funciona via TLS ou WebSocket seguro — só a URL muda.
import mqtt from "mqtt";
import { randomBytes } from "node:crypto";
const clientId = `demo-${randomBytes(3).toString("hex")}`;
const prefix = `connectmq/demo/${clientId}`;
// Opção A: MQTT sobre TLS
const url = "mqtts://broker.connectmq.com:8883";
// Opção B: MQTT sobre WebSocket seguro
// const url = "wss://broker.connectmq.com:8084/mqtt";
const client = mqtt.connect(url, { clientId, protocolVersion: 5 });
client.on("connect", () => {
console.log("Connected as", clientId);
client.subscribe(`${prefix}/#`, { qos: 1 });
client.publish(`${prefix}/humidity`, JSON.stringify({ value: 48 }), { qos: 1 });
});
client.on("message", (topic, payload) => {
console.log(topic, payload.toString());
});
client.on("error", (err) => console.error(err.message));
Exemplo no Navegador via WSS
Navegadores não conseguem abrir sockets TCP puros, então usam MQTT sobre WebSocket. Páginas servidas via HTTPS precisam usar wss:// na porta 8084. Empacote o código abaixo com sua ferramenta favorita (Vite, webpack, esbuild):
import mqtt from "mqtt";
const clientId = "web-" + Math.random().toString(16).slice(2, 8);
const prefix = `connectmq/demo/${clientId}`;
const client = mqtt.connect("wss://broker.connectmq.com:8084/mqtt", {
clientId,
protocolVersion: 5,
});
client.on("connect", () => {
client.subscribe(`${prefix}/#`);
client.publish(`${prefix}/hello`, "Hello from the browser");
});
client.on("message", (topic, payload) => {
const line = document.createElement("div");
line.textContent = `${topic}: ${payload.toString()}`;
document.body.appendChild(line);
});
Para entender melhor caminhos, portas e proxies, leia MQTT sobre WebSocket.
Broker MQTT Público Gratuito vs. Broker Privado
O servidor MQTT público é uma sandbox para testes e protótipos. Migre para um broker privado, como um broker MQTT gerenciado em app.connectmq.com, assim que qualquer um destes pontos for verdade:
| Você precisa de... | Servidor MQTT público | Broker privado em app.connectmq.com |
|---|---|---|
| Privacidade | Qualquer um na área pública pode ler seus topics | Os topics do tenant ficam isolados de outros tenants e da área pública |
| Autenticação | Anônima, só client ID | Usuário, senha e client ID emitidos por broker |
| Tamanho de mensagem | 64 KB | 256 KB no Serverless (Free), 1 MB no Serverless (Paid) |
| Conexões | Para testes | Até 25 (Free), até 1.000 (Paid) ou um cluster Dedicated |
| Ferramentas | Seus próprios clientes | Portal com cliente MQTT no navegador, explorador de topics ao vivo, dashboard e regras de alerta |
Sinais típicos de que você já superou a área pública: você está enviando dados reais de clientes ou dispositivos (como a telemetria de uma planta ou dados pessoais protegidos pela LGPD), quer impedir que outras pessoas vejam os nomes dos seus topics, precisa de credenciais estáveis para uma frota de dispositivos ou quer um dashboard e alertas sobre seus dados. A troca é basicamente uma mudança de configuração — mantenha o mesmo código e adicione o usuário, a senha e o client ID do portal:
client = mqtt.Client(mqtt.CallbackAPIVersion.VERSION2, client_id="YOUR_CLIENT_ID", protocol=mqtt.MQTTv5)
client.username_pw_set("YOUR_USERNAME", "YOUR_PASSWORD")
client.tls_set()
client.connect("broker.connectmq.com", 8883)
Antes de entrar em produção, revise nossas boas práticas de segurança MQTT.
Comece com o ConnectMQ
Pronto para manter seus dados privados? Crie uma conta gratuita em app.connectmq.com — o plano Serverless (Free) não exige cartão de crédito. Escolha um plano, crie um broker e copie o usuário, a senha e o client ID gerados. Sua primeira mensagem privada está a poucos minutos de distância.
Perguntas frequentes
O broker.connectmq.com é realmente gratuito?
Sim. A área pública do broker.connectmq.com é gratuita para testes, aprendizado e demonstrações, sem cadastro. Ela tem limites de uso justo, como 64 KB por mensagem e 10 mensagens por segundo por cliente.
Preciso de usuário e senha para o servidor MQTT público?
Não. Conecte sem credenciais e com um client ID único e não vazio. Um client ID vazio é rejeitado.
Outras pessoas podem ver minhas mensagens em um broker MQTT público?
Sim. Tudo o que é publicado na área pública pode ser lido por qualquer outro cliente público, então use um prefixo de topic único e nunca envie dados pessoais ou sensíveis. Para dados privados, crie um broker em app.connectmq.com.
Quais versões do MQTT e quais portas o servidor MQTT público suporta?
Ele suporta MQTT 3.1.1 e MQTT 5.0 em TCP 1883, TLS 8883, WebSocket 8083 e WebSocket seguro 8084 (caminho /mqtt).
Posso usar o broker MQTT público gratuito em produção?
Ele não foi projetado para produção. Para qualquer implantação real, use um broker ConnectMQ privado com credenciais, isolamento entre tenants e limites maiores.



