Caso de uso

Atualizações ao vivo em cada app

Pedido confirmado, entregador a duas paradas, alerta de preço disparado: seu backend publica o evento uma vez e cada aba do navegador e app móvel inscrito recebe na hora via MQTT sobre WebSockets seguros — sem polling e sem servidor de sockets próprio.

Sem cartão de crédito

Mensagem de exemplo

PUBLISH orders/ord-58213/status

{"status":"out_for_delivery","eta":"14:35","stops_away":2,"courier":"c-221","ts":"2026-10-22T14:02:51Z"}

QoS 1 · TLS 8883 · PUBACK

O problema

Polling, servidores de socket caseiros e avisos perdidos

Apps que consultam uma API a cada poucos segundos sobrecarregam o backend e ainda parecem lentos. Um serviço WebSocket próprio exige escrever reconexão, fan-out e escala horizontal — e o usuário que sai do Wi-Fi para o 4G ainda perde justamente a atualização que importava.

Como funciona

  1. 1

    Seu backend publica eventos

    O serviço de pedidos, o sistema de despacho ou o job de alertas publica um pequeno evento JSON em um tópico como orders/{id do pedido}/status sempre que algo muda.

  2. 2

    Os apps assinam após o login

    Apps web se conectam com MQTT.js via WebSockets seguros, apps móveis com um cliente MQTT nativo, e assinam os tópicos daquele usuário.

  3. 3

    O broker distribui

    O ConnectMQ entrega cada evento a todos os clientes inscritos ao mesmo tempo — o celular do cliente, a aba aberta e o console do seu atendente.

  4. 4

    A interface se atualiza

    O app avança o rastreio do pedido, atualiza um contador ou mostra um banner. Para apps fechados, seu serviço de push continua enviando via APNs e FCM.

ConnectMQ

O que ele precisa do broker

Conexões nativas no navegador

MQTT sobre WebSockets seguros permite que o navegador se conecte diretamente ao mesmo broker que seu backend acessa via MQTT com TLS.

Cada cliente vê só os seus tópicos

Autenticação com usuário e senha e ACLs por tópico limitam cada cliente à sua própria árvore, como users/{id}/#, e só o seu backend pode publicar nela.

Estado atual ao (re)conectar

Mensagens retidas entregam o último status do pedido assim que o app assina; sessões persistentes com QoS 1 entregam o que se perdeu numa queda rápida.

O QoS certo para cada evento

QoS 0 para a posição do entregador, em que só a mais recente importa, e QoS 1 para mudanças de status e alertas que precisam chegar.

O que você ganha

  • Atualizações aparecem no app no momento em que acontecem
  • Menos carga nas suas APIs com refresh e polling
  • Nenhum servidor WebSocket ou camada de fan-out para construir e escalar
  • O usuário vê o estado atual assim que reabre o app
Topics de exemplo
orders/ord-58213/status            (retained)
orders/ord-58213/courier/location
users/u-90417/notifications
users/u-90417/badge                 (retained)

Perguntas frequentes

MQTT ou WebSockets para notificações em tempo real: qual usar?

Os dois — MQTT roda sobre WebSockets. Um WebSocket puro é só um canal: você ainda precisa construir tópicos, fan-out, reconexão e garantias de entrega. MQTT sobre WebSockets seguros acrescenta publish/subscribe, QoS, mensagens retidas e Last Will, e o ConnectMQ cuida do lado do servidor.

O MQTT pode substituir as notificações push (FCM/APNs)?

Para apps abertos ou em primeiro plano, sim: o MQTT entrega atualizações mais rápido e com mais dados. Com o app fechado, iOS e Android limitam conexões em segundo plano, então mantenha APNs e FCM para esses casos. Um padrão comum é publicar uma vez e deixar um pequeno serviço repassar alguns eventos como push.

Como usar MQTT em um app React ou no navegador?

Use o MQTT.js: conecte ao endpoint de WebSockets seguros do ConnectMQ, assine os tópicos do usuário e atualize o estado a cada mensagem. Nunca coloque no front-end uma credencial com permissões amplas — dê aos clientes do navegador credenciais cuja ACL só permita ler os próprios tópicos.

Construa isso no ConnectMQ

Comece no plano Free — sem cartão de crédito —, conecte hoje seus primeiros dispositivos e faça upgrade quando entrar em produção.