Quando uma conexão MQTT falha, a porta é a primeira coisa a verificar. O MQTT pode rodar sobre TCP simples, sobre TLS, sobre WebSockets e sobre WebSockets seguros — e cada transporte normalmente fica em uma porta diferente. Escolher a errada é o motivo mais comum de um cliente ficar travado em Connecting…. Este guia explica cada porta MQTT comum, quando usá-la e as portas exatas dos brokers públicos que você pode usar para testar.
Portas MQTT em resumo
| Porta | Transporte | Esquema da URL | Criptografada | Funciona no navegador |
|---|---|---|---|---|
1883 | MQTT sobre TCP | mqtt:// | Não | Não |
8883 | MQTT sobre TLS | mqtts:// | Sim | Não |
8083 / 8080 / 8000 / 80 | MQTT sobre WebSocket | ws:// | Não | Só a partir de páginas HTTP simples |
8084 / 8081 / 8884 / 443 | MQTT sobre WebSocket seguro | wss:// | Sim | Sim |
Apenas 1883 e 8883 são registradas na IANA (como mqtt e secure-mqtt). Portas WebSocket são uma convenção que muda de broker para broker, e por isso você deve sempre conferir a documentação do broker — ou a nossa lista de brokers públicos — antes de conectar.
Porta MQTT 1883: TCP simples
A porta MQTT 1883 é o transporte original, sem criptografia. O cliente abre uma conexão TCP e envia o pacote binário CONNECT diretamente. Ela tem o menor overhead e é o padrão da maioria dos dispositivos embarcados, de ferramentas de linha de comando como o mosquitto_pub e de bibliotecas server-side.
O problema: tudo — inclusive o usuário e a senha dentro do CONNECT — trafega em texto puro. Use a 1883 em uma rede local confiável ou para testes descartáveis, nunca para credenciais ou dados de produção atravessando a internet.
Porta MQTT 8883: MQTT sobre TLS
A porta MQTT 8883 é o mesmo protocolo MQTT envolvido em TLS. O cliente primeiro faz um handshake TLS, verifica o certificado do broker e só então envia o CONNECT. É a escolha padrão para dispositivos e serviços de backend que falam com um broker pela internet.
- O cliente precisa de um bundle de CAs confiáveis (o repositório do sistema funciona para CAs públicas; configurações com certificado autoassinado precisam de um
cafile). - O hostname ao qual você se conecta precisa bater com o certificado, então conecte pelo nome, não pelo IP.
- Os brokers também podem exigir certificados de cliente (mutual TLS) nessa porta ou em uma porta separada.
Portas WebSocket do MQTT: 8083, 8084 e companhia
Navegadores não conseguem abrir sockets TCP brutos, então aplicações web tunelam o MQTT por um WebSocket. O cliente faz uma requisição HTTP de upgrade para um caminho (geralmente /mqtt) com o subprotocolo mqtt e, a partir daí, os pacotes MQTT trafegam dentro de frames WebSocket. Não existe uma única porta WebSocket MQTT padrão:
- O EMQX usa por padrão
8083(ws) e8084(wss). - O broker público da HiveMQ usa
8000(ws) e8884(wss). - O test.mosquitto.org usa
8080(ws) e8081(wss). - Muitas implantações em produção colocam os WebSockets atrás de um reverse proxy em
80/443.
Porta 443: passando por firewalls
Redes corporativas, Wi-Fi de hotel e operadoras móveis muitas vezes bloqueiam tudo, exceto as portas web. Rodar MQTT sobre WebSockets seguros na 443 faz o tráfego parecer HTTPS comum, então ele passa quase em qualquer lugar. O sandbox da Eclipse em mqtt.eclipseprojects.io faz exatamente isso. Algumas plataformas de IoT na nuvem também aceitam MQTT nativo sobre TLS na 443 e usam a extensão TLS ALPN para diferenciá-lo do HTTPS na mesma porta.
Portas dos brokers MQTT públicos populares
| Broker | Host | TCP | TLS | WS | WSS |
|---|---|---|---|---|---|
| HiveMQ | broker.hivemq.com | 1883 | 8883 | 8000 /mqtt | 8884 /mqtt |
| EMQX | broker.emqx.io | 1883 | 8883 | 8083 /mqtt | 8084 /mqtt |
| Mosquitto | test.mosquitto.org | 1883 | 8883 | 8080 | 8081 |
| Eclipse | mqtt.eclipseprojects.io | 1883 | 8883 | 80 /mqtt | 443 /mqtt |
| ConnectMQ (acesso antecipado) | broker.connectmq.com | 1883 | 8883 | 8083 /mqtt | 8084 /mqtt |
O test.mosquitto.org também mantém listeners extras para testes específicos, como um listener autenticado na 1884 (usuário rw, senha readwrite).
Conectar ao EMQX na porta wss 8084
Colocando a porta na URL de conexão
A maioria das bibliotecas cliente recebe uma única URL que combina esquema, host, porta e (para WebSockets) caminho:
import mqtt from 'mqtt';
// Node.js only — raw TCP and TLS
mqtt.connect('mqtt://broker.emqx.io:1883');
mqtt.connect('mqtts://broker.emqx.io:8883');
// Browser or Node.js — WebSockets (note the /mqtt path)
mqtt.connect('ws://broker.emqx.io:8083/mqtt');
mqtt.connect('wss://broker.emqx.io:8084/mqtt');Erros comuns com portas
- Usar
mqtt://em uma porta WebSocket (ouws://na 1883). O esquema define o protocolo que o cliente fala; a porta precisa corresponder a ele. - Esquecer o caminho do WebSocket. Muitos brokers só aceitam o upgrade em
/mqtt; sem ele você recebe um 404 ou uma falha silenciosa. - Usar TLS em uma porta simples.
mqtts://na 1883 falha com um erro de handshake TLS como wrong version number. - Testar só a partir da sua própria rede. Uma porta que funciona no escritório pode estar bloqueada na rede celular ou no Wi-Fi de visitantes. Teste a partir da rede que seus dispositivos realmente vão usar.
- Expor a 1883 na internet com acesso anônimo. Scanners que varrem a internet encontram brokers MQTT abertos rapidamente. Se um broker precisa estar acessível, exija credenciais e prefira TLS.
Como verificar se uma porta MQTT está aberta
Antes de culpar seu código, confirme que a porta está acessível a partir da sua rede:
# Is the TCP port open?
nc -vz broker.hivemq.com 1883
# Does the TLS port complete a handshake with a valid certificate?
openssl s_client -connect broker.hivemq.com:8883 -servername broker.hivemq.com </dev/null
# Full MQTT round trip over TLS
mosquitto_sub -h broker.hivemq.com -p 8883 --capath /etc/ssl/certs -t 'testmqtt/port-check' -vUm timeout geralmente significa que um firewall está descartando o tráfego; connection refused significa que nada está escutando naquela porta. Nosso guia de erros de conexão MQTT cobre os dois casos.
Abrindo portas no seu próprio broker
Se você mesmo roda o Mosquitto, cada porta é um listener separado. Uma configuração típica mantém a 1883 presa ao localhost e expõe publicamente apenas listeners criptografados:
# Plain MQTT, local clients only
listener 1883 127.0.0.1
# MQTT over TLS
listener 8883
certfile /etc/mosquitto/certs/server.crt
keyfile /etc/mosquitto/certs/server.key
# Secure WebSockets for browsers
listener 8084
protocol websockets
certfile /etc/mosquitto/certs/server.crt
keyfile /etc/mosquitto/certs/server.key
allow_anonymous false
password_file /etc/mosquitto/passwdLembre-se de abrir as mesmas portas no firewall da sua nuvem ou no security group.
Qual porta MQTT você deve usar?
- Dispositivo ou backend pela internet:
8883(TLS). - Aplicação no navegador: a porta
wss://do broker, de preferência a443. - Rede restritiva:
wss://na443. - Desenvolvimento local ou um teste rápido em broker público: a
1883serve.
Pronto para testar uma? Abra o cliente MQTT online, escolha um broker e a porta WebSocket segura já vem preenchida.
Perguntas frequentes
Qual é a porta padrão do MQTT?
A porta padrão para MQTT sem criptografia sobre TCP é a 1883, e a padrão para MQTT sobre TLS é a 8883. Ambas são registradas na IANA. Portas WebSocket não são padronizadas e variam de broker para broker.
Qual porta MQTT devo usar a partir de um navegador?
Um navegador não consegue abrir conexões TCP brutas, então precisa usar o listener WebSocket do broker. A partir de uma página HTTPS você precisa da porta WebSocket segura (wss), por exemplo 8084 no EMQX, 8884 na HiveMQ ou 443 no sandbox da Eclipse.
O MQTT pode rodar na porta 443?
Sim. Muitos brokers expõem MQTT sobre WebSockets seguros na 443 porque ela quase nunca é bloqueada por firewalls ou proxies. Alguns serviços de IoT na nuvem também aceitam MQTT sobre TLS na 443 usando ALPN.