Fundamentos

Portas MQTT explicadas: 1883, 8883, 8083, 8084 e 443

Qual porta MQTT usar? Entenda as portas 1883, 8883, 8083, 8084 e 443, quais funcionam no navegador e as portas exatas dos brokers públicos mais populares.

Atualizado · 6 min de leitura

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

PortaTransporteEsquema da URLCriptografadaFunciona no navegador
1883MQTT sobre TCPmqtt://NãoNão
8883MQTT sobre TLSmqtts://SimNão
8083 / 8080 / 8000 / 80MQTT sobre WebSocketws://NãoSó a partir de páginas HTTP simples
8084 / 8081 / 8884 / 443MQTT sobre WebSocket segurowss://SimSim

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) e 8084 (wss).
  • O broker público da HiveMQ usa 8000 (ws) e 8884 (wss).
  • O test.mosquitto.org usa 8080 (ws) e 8081 (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

BrokerHostTCPTLSWSWSS
HiveMQbroker.hivemq.com188388838000 /mqtt8884 /mqtt
EMQXbroker.emqx.io188388838083 /mqtt8084 /mqtt
Mosquittotest.mosquitto.org1883888380808081
Eclipsemqtt.eclipseprojects.io1883888380 /mqtt443 /mqtt
ConnectMQ (acesso antecipado)broker.connectmq.com188388838083 /mqtt8084 /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:

URLs de conexão do MQTT.js
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 (ou ws:// 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:

Verificações de porta
# 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' -v

Um 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:

mosquitto.conf
# 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/passwd

Lembre-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 a 443.
  • Rede restritiva: wss:// na 443.
  • Desenvolvimento local ou um teste rápido em broker público: a 1883 serve.

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.