4. Funcionamento prático
4.1 Etapas de uma conexão MQTT
O funcionamento do MQTT segue uma sequência estruturada que envolve três fases principais: conexão, comunicação e desconexão. Abaixo estão as etapas essenciais para o estabelecimento de uma sessão MQTT entre cliente e broker:
- Estabelecimento de conexão: o cliente abre uma conexão TCP com o broker na porta padrão (geralmente 1883 ou 8883 com TLS).
- Envio do pacote CONNECT: o cliente envia um pacote CONNECT com informações como ID do cliente, credenciais, tempo de Keep Alive e outras configurações.
- Recebimento do pacote CONNACK: o broker responde com um CONNACK indicando se a conexão foi aceita ou rejeitada.
4.2 Publicação e assinatura
Após a conexão ser estabelecida, o cliente pode:
- Publicar: enviar mensagens para um ou mais tópicos definidos, utilizando o pacote PUBLISH.
- Assinar: registrar interesse em tópicos específicos, utilizando o pacote SUBSCRIBE.
Quando uma mensagem é publicada em um tópico, o broker é responsável por distribuí-la a todos os clientes que assinaram aquele tópico, de acordo com o nível de Qualidade de Serviço (QoS) especificado.
4.3 Keep Alive e Ping Requests
O intervalo de Keep Alive é definido pelo cliente na etapa de conexão (em segundos). Se esse intervalo for excedido sem o envio de mensagens, o cliente envia um pacote PINGREQ ao broker para manter a sessão ativa.
O broker, ao receber o PINGREQ, responde com um PINGRESP. Caso o broker não receba qualquer pacote do cliente durante o tempo de Keep Alive, ele pode encerrar a conexão.
Esse mecanismo é fundamental para manter conexões persistentes e detectar desconexões silenciosas de forma eficiente.