Testes de brokers

Teste um broker MQTT pelo Android e pelo iOS

Como testar um broker MQTT pelo celular Android ou iOS: cliente web via WSS, apps MQTT, Termux, emuladores e as armadilhas de rede que só aparecem no celular.

Atualizado · 7 min de leitura

Teste um broker MQTT pelo Android e pelo iOS

Para testar um broker MQTT pelo celular, o caminho mais rápido não precisa de app nenhum: abra o cliente MQTT online no Chrome do Android ou no Safari do iOS, conecte via WebSocket seguro (wss), assine e publique. Para algo mais profundo — TCP puro na 1883, TLS na 8883, comportamento em segundo plano — use um app MQTT nativo ou um terminal no aparelho. Este guia cobre cada abordagem e as armadilhas de rede que só aparecem no celular.

Por que testar pelo celular?

Seu notebook no Wi-Fi do escritório não está onde seus usuários estão. Um teste pelo celular responde perguntas que um teste no desktop não consegue:

  • O broker aceita conexões de redes móveis, e não só do IP do seu escritório?
  • O NAT da operadora e os timeouts de inatividade derrubam uma conexão silenciosa depois de alguns minutos?
  • A conexão do seu app sobrevive ao bloqueio de tela, à troca de app e à troca de rede (Wi-Fi → 4G/5G)?
  • Os certificados são validados no repositório de confiança do celular, que pode ser diferente do seu desktop?

Opção 1 — O navegador, via WSS

Navegadores móveis suportam WebSockets, então MQTT sobre WebSockets funciona exatamente como no desktop.

  1. No celular, abra testmqtt.com/client.
  2. Mantenha o protocolo em WSS. Para o seu próprio broker, escolha Custom broker… e informe o host broker.connectmq.com, a porta 8084, o caminho mqtt e as credenciais do seu usuário de teste.
  3. Assine um topic único como testmqtt/phone-4c21/# e publique em testmqtt/phone-4c21/hello.

Para não digitar num teclado pequeno, monte o link no notebook e abra no celular (mande para você mesmo ou gere um QR code):

Open this link on the phone
https://testmqtt.com/client?url=wss://broker.connectmq.com:8084/mqtt&topic=testmqtt/phone-4c21/%23

Depois publique a partir do notebook e veja o celular receber — isso prova o caminho completo de um cliente desktop, passando pelo broker, até uma rede móvel:

Laptop → broker → phone
mosquitto_pub -h broker.connectmq.com -p 1883 \
  -t testmqtt/phone-4c21/hello -m "from laptop" -q 1

Troque o celular do Wi-Fi para os dados móveis e repita. Se funciona em um e não no outro, o problema é de rede, não do broker. A versão passo a passo para desktop está em teste um broker MQTT pelo navegador.

Opção 2 — Apps MQTT nativos

Apps nativos abrem sockets TCP e TLS de verdade, então testam as mesmas portas que seus dispositivos usam. As duas lojas oferecem vários clientes MQTT de uso geral e apps de dashboard — no Android, apps como MyMQTT, MQTT Dash e IoT MQTT Panel; no iOS, apps como MQTTool e IoT MQTT Panel. Disponibilidade e recursos mudam, então confira a página na loja e prefira apps que permitam:

RecursoPor que importa no teste
TCP e TLS (8883)Testar a porta que seus dispositivos realmente usam
Opções de CA / certificado próprioCAs privadas e certificados de cliente
Usuário / senhaBrokers autenticados e verificação de ACLs
Escolha entre MQTT 3.1.1 / 5Bater com o firmware dos seus dispositivos
Assinatura com wildcardsAcompanhar toda a subárvore de um dispositivo
Opções de retain e QoSReproduzir o comportamento real dos dispositivos

Use um usuário de teste dedicado com ACLs limitadas a topics de teste — apps móveis normalmente guardam as credenciais no aparelho.

Opção 3 — Um terminal no celular

No Android, o Termux oferece um ambiente Linux com os clientes de linha de comando do Mosquitto:

Termux on Android
pkg install mosquitto
mosquitto_sub -h broker.connectmq.com -p 1883 -t 'testmqtt/phone-4c21/#' -v &
mosquitto_pub -h broker.connectmq.com -p 1883 -t testmqtt/phone-4c21/hello -m "from termux"

Os mesmos comandos funcionam com -p 8883 e --capath ou --cafile para TLS (apontando para um bundle de CAs que você tenha no aparelho). No iOS, apps de terminal são mais limitados; para scripts no iPhone, um app nativo ou o navegador costuma ser mais simples. Quando a CLI funciona, tudo de exemplos de mosquitto_pub e mosquitto_sub vale também no celular.

Testando o seu próprio app: emuladores e simuladores

Quando o app que você está desenvolvendo não conecta, descubra se é o código ou a rede:

  • Emulador Android: localhost dentro do emulador é o próprio emulador. Use 10.0.2.2 para alcançar um broker rodando na sua máquina de desenvolvimento.
  • Simulador iOS: compartilha a pilha de rede do Mac, então localhost alcança um broker no Mac. Um iPhone físico não — ele precisa do IP de rede local do Mac.
  • Aparelhos físicos: o broker precisa escutar na interface de rede local, não só em 127.0.0.1 (o Mosquitto 2.x sem listener configurado aceita só conexões locais), e o firewall do host precisa liberar a porta.

Regras da plataforma também podem bloquear conexões em texto puro no seu app. A configuração de segurança de rede do Android bloqueia por padrão tráfego cleartext nas pilhas baseadas em HTTP, o que afeta ws://; o App Transport Security do iOS vale para conexões baseadas em URLSession, incluindo WebSockets. Use wss:// ou TLS (8883) em vez de adicionar exceções. A configuração de cada biblioteca está em MQTT no Android com Kotlin e MQTT no iOS com Swift.

Armadilhas das redes móveis

SintomaCausa provávelO que tentar
Funciona no Wi-Fi, timeout nos dados móveisA rede restringe as portas 1883/8883Teste WSS na 443 se o seu broker oferecer; verifique com a operadora/MDM
A conexão cai após alguns minutos em silêncioTimeout de inatividade do NAT da operadoraKeep alive abaixo do timeout (ex.: 30–60 s); veja timeouts de NAT
Desconecta sempre que a tela bloqueiaO sistema suspende o appEsperado; projete para reconexão + sessões persistentes
Rajada de reconexões ao trocar de redeO IP muda no handoverReconexão limpa com backoff, mesmo client ID
Connection refused só a partir do celularBroker preso ao localhost ou regra de firewallEscute em 0.0.0.0, libere a porta, teste com nc de outra máquina
Erro de certificado no celular, ok no desktopFalta o intermediário ou a CA é privadaSirva a cadeia completa; instale a CA nos aparelhos de teste

Para testes realistas de rede instável no laboratório, veja testar MQTT em condições de rede celular.

Um plano de teste móvel de cinco minutos

  1. Navegador do celular no Wi-Fi: conecte via WSS, assine, publique, receba.
  2. O mesmo teste nos dados móveis.
  3. Publique do notebook e receba no celular (e vice-versa).
  4. App nativo ou Termux: repita em TCP 1883 e TLS 8883 com as suas credenciais reais.
  5. Deixe uma assinatura ociosa por dez minutos; veja se ela sobrevive.
  6. Bloqueie a tela, troque de rede, desbloqueie: confirme que seu app reconecta e assina de novo.

Abra o cliente no seu celular

Testar pelo celular leva minutos e pega problemas que nenhum teste de desktop pega: portas bloqueadas nos dados móveis, timeouts de NAT, apps dormindo e cadeias de certificado que só falham no repositório de confiança do aparelho. Comece no navegador móvel via WSS e depois passe para um cliente nativo para as portas e o comportamento de que o seu app depende.

Perguntas frequentes

Qual é a forma mais rápida de testar um broker MQTT pelo celular?

Abra um cliente MQTT online como o testmqtt.com/client no navegador do celular e conecte via WebSocket seguro (wss, muitas vezes na porta 8084 ou 443). Funciona igual no Chrome do Android e no Safari do iOS, sem instalar nenhum app.

Por que meu celular não alcança o broker MQTT que roda no meu notebook?

localhost no celular é o próprio celular. Use o IP de rede local do notebook, garanta que os dois estão na mesma rede, que o broker escuta em todas as interfaces e não só em 127.0.0.1, e que o firewall do notebook libera a porta.

Por que o MQTT funciona no Wi-Fi, mas não nos dados móveis?

Algumas redes móveis e de visitantes restringem portas que não são web, como 1883 e 8883, e o NAT da operadora pode derrubar conexões ociosas rapidamente. Teste a porta 443 ou WebSockets na 443, se disponível, e use um keep alive menor que o timeout de inatividade da rede.