Você consegue testar um broker MQTT pelo navegador em cerca de dois minutos — sem instalar o Mosquitto, sem Python, sem permissão de administrador. Abra o cliente MQTT online, conecte via WebSocket seguro (wss), assine um topic, publique uma mensagem e veja-a voltar. Se essa ida e volta funcionar, o broker está no ar, acessível a partir da sua rede e roteando mensagens.
Este guia percorre o teste completo passo a passo, mostra como apontá-lo para o seu próprio broker e como compartilhar um teste pronto com um colega ou com quem desenvolve o firmware.
Como o MQTT funciona no navegador
Navegadores não conseguem abrir sockets TCP puros, então uma página web não fala MQTT diretamente na porta 1883. Em vez disso, ela usa MQTT sobre WebSockets: os mesmos pacotes MQTT, encapsulados em uma conexão WebSocket que começa como uma requisição HTTP de upgrade.
| Transporte | Porta típica | URL | Funciona a partir de uma página https? |
|---|---|---|---|
| WebSocket | 8083 / 8080 | ws://host:8083/mqtt | Não — bloqueado como mixed content |
| WebSocket seguro | 8084 / 8443 / 443 | wss://host:8084/mqtt | Sim |
| TCP | 1883 | mqtt://host:1883 | Só por meio de um servidor relay |
| TLS | 8883 | mqtts://host:8883 | Só por meio de um servidor relay |
Duas consequências importam para o teste: o broker precisa ter um listener WebSocket ativo (com o caminho correto — geralmente /mqtt) e, a partir de uma página https, você precisa usar wss. O cliente do TestMQTT também oferece TCP e TLS; como navegadores não abrem esses sockets, ele os retransmite pelo servidor do TestMQTT. Isso é útil para verificar um broker só com TCP, mas lembre que a conexão passa a sair da rede do relay, não da sua. Para o contexto, veja MQTT sobre WebSockets.
Passo 1 — Conectar
- Abra testmqtt.com/client. O protocolo padrão é WSS e um broker recomendado já vem selecionado.
- Clique em Connect. O status muda para conectado e o log registra a conexão bem-sucedida (o CONNACK do broker).
- Um client ID único (
testmqtt_xxxxxxxx) é gerado para cada aba, então duas abas nunca derrubam uma à outra do broker.
Para testar o seu próprio broker, escolha Custom broker… na lista de brokers e preencha as configurações:
| Campo | Exemplo | Observações |
|---|---|---|
| Protocolo | WSS | Use WS só a partir de páginas http ou ferramentas locais |
| Host | broker.connectmq.com | Só o nome do host — sem wss:// e sem porta |
| Porta | 8084 | A porta WebSocket segura do seu broker |
| Caminho | mqtt | Precisa ser igual ao caminho WebSocket do broker |
| Usuário / Senha | $MQTT_USER / $MQTT_PASS | Um usuário de teste, não uma conta de administrador |
| Versão MQTT | 3.1.1 ou 5 | Teste a versão que os seus dispositivos usam |
Se o broker usa um certificado autoassinado, quem decide se confia nele é o navegador, não a página. Abra https://host:8084/ uma vez em uma aba e aceite o certificado — ou, melhor, use um certificado de uma CA pública.
Passo 2 — Assinar e publicar
Use um topic que ninguém mais esteja usando. Em um broker compartilhado, test é movimentado; algo como testmqtt/<seu-nome>-<aleatorio>/# mantém as suas mensagens separadas.
- Em Subscriptions, adicione
testmqtt/demo-7f3a/#com QoS 1. - Em Publish, defina o topic
testmqtt/demo-7f3a/sensor, escolha o modelo Sensor JSON ou digite o seu payload e clique em Publish. - A mensagem aparece na lista, marcada como recebida. Dê um clique duplo para ver todos os detalhes: topic, QoS, flag retained, tamanho e o payload completo.
Se você publica e nada aparece, confira se o filtro da assinatura realmente corresponde ao topic — testmqtt/demo-7f3a/+ corresponde a um nível, # a todos os níveis abaixo. O topic matcher resolve isso em segundos, e topics e wildcards explica as regras.
Para um fluxo contínuo, defina um intervalo de repetição no painel de publicação. Assim fica fácil observar a conexão por alguns minutos e perceber quedas ou lacunas.
Passo 3 — Testar mensagens retained e Last Will
Um teste de broker de verdade vai além de uma mensagem:
- Retained: publique em
testmqtt/demo-7f3a/statuscom retain ativado. Desconecte, reconecte e assine de novo — o broker deve entregar o último valor retido imediatamente. Para apagá-lo, publique um payload retido vazio — ou use Clear retained message nos detalhes da mensagem. - Last Will: em Settings, defina um will topic como
testmqtt/demo-7f3a/lwtcom o payloadoffline. Abra uma segunda aba assinando esse topic e feche a primeira sem desconectar. Depois de aproximadamente 1,5× o intervalo de keep alive, o broker deve publicar o will. Um Disconnect limpo não o dispara — esse é o comportamento correto. - MQTT 5: mude a versão do protocolo para 5 e reconecte. Se o broker só suporta 3.1.1, você receberá um erro no CONNACK como
Unsupported Protocol Version; a ferramenta de reason codes explica cada código.
Passo 4 — Conferir com outro cliente
Um teste no navegador prova que o listener WebSocket funciona. Dispositivos normalmente usam TCP ou TLS, então feche o ciclo: mantenha o navegador inscrito e publique a partir de um terminal.
mosquitto_pub -h broker.connectmq.com -p 1883 \
-t testmqtt/demo-7f3a/sensor -m '{"temp":21.5}' -q 1 -dmosquitto_pub -h broker.connectmq.com -p 8883 \
--cafile /etc/ssl/certs/ca-certificates.crt \
-u "$MQTT_USER" -P "$MQTT_PASS" \
-t testmqtt/demo-7f3a/sensor -m '{"temp":21.5}' -q 1Se a mensagem aparece no navegador, os dois listeners compartilham o mesmo broker e o roteamento funciona entre transportes. Se o TCP funciona e o navegador não — ou o contrário —, o problema está no listener ou no caminho de rede de um transporte, não no broker como um todo.
Compartilhe um teste pronto
Quando você depura com outra pessoa — um desenvolvedor de firmware, um cliente, um colega —, envie um link que abre o cliente já conectado ao endpoint certo e inscrito no topic certo:
https://testmqtt.com/client?url=wss://broker.connectmq.com:8084/mqtt&topic=testmqtt/demo-7f3a/%23url define protocolo, host, porta e caminho e conecta automaticamente; topic define a assinatura (codifique # como %23). Vocês dois veem as mesmas mensagens ao vivo, o que é muito mais rápido do que trocar prints de logs. As credenciais nunca fazem parte do link — cada pessoa digita as suas.
Quando o teste no navegador falha
| Mensagem ou sintoma | Causa provável | Correção |
|---|---|---|
WebSocket connection to 'wss://…' failed | Porta errada, sem listener WebSocket, firewall | Verifique a porta wss do broker; veja WebSocket connection failed |
| Conecta e fecha na hora / HTTP 404 | Caminho errado (/mqtt vs /ws vs /) | Use o caminho do listener; veja WebSocket path 404 |
| "browsers block unencrypted ws:// connections" | Mixed content: ws a partir de uma página https | Use wss com um certificado válido |
| Erro de certificado no console | Certificado autoassinado ou expirado, host divergente | Use um certificado assinado por CA ou aceite-o uma vez em uma aba |
Not authorized / Bad user name or password | Credenciais ou ACL | Verifique o usuário e as permissões por topic |
| Conectado, mas sem mensagens | Filtro não corresponde ou ACL nega a assinatura silenciosamente | Teste o filtro no topic matcher; verifique os códigos do SUBACK |
As ferramentas de desenvolvedor do navegador mostram os frames WebSocket brutos em Network → WS, muitas vezes o jeito mais rápido de ver se o CONNECT saiu e o que voltou. Depurar MQTT com o Chrome DevTools mostra o passo a passo.
Abrir o cliente de teste no navegador
Testar pelo navegador é a primeira verificação mais rápida que existe: não exige instalação, funciona em qualquer máquina e um link compartilhado coloca todo mundo olhando o mesmo topic ao vivo. Quando a ida e volta no navegador funcionar, confira via TCP ou TLS e você saberá que broker, listeners e caminho de rede estão em ordem.
Perguntas frequentes
Um navegador consegue se conectar diretamente a um broker MQTT?
Sim, via MQTT sobre WebSockets. Navegadores não abrem sockets TCP puros, então o broker precisa de um listener WebSocket (normalmente ws na 8083 ou 8080 e wss na 8084 ou 8443, com um caminho como /mqtt). Clientes online que oferecem TCP retransmitem a conexão por um servidor.
Por que ws:// falha quando a página é servida por HTTPS?
Navegadores bloqueiam conexões sem criptografia a partir de páginas seguras (mixed content). Uma página carregada via https:// só pode abrir WebSockets wss://, então use a porta WebSocket segura do broker com um certificado válido.
É seguro digitar as credenciais do broker em um cliente MQTT online?
Use um usuário de teste dedicado com ACLs limitadas a topics de teste, em vez de credenciais de administrador de produção. O TestMQTT não armazena senhas, mas contas de teste com privilégio mínimo são uma boa prática com qualquer ferramenta.


