Según las especificaciones , siempre es el cliente quien debe establecer la conexión con un servidor.
Cliente:
Un programa o dispositivo que usa MQTT. Un cliente siempre establece la conexión de red al servidor . Puede
Publique mensajes de aplicación en los que otros clientes puedan estar interesados.
Suscríbase para solicitar mensajes de aplicación que le interese recibir.
Anule la suscripción para eliminar una solicitud de mensajes de aplicación.
Desconectarse del servidor.
Y si este cliente se suscribe a un Mensaje de aplicación, el servidor debe reenviar esos mensajes a este cliente en particular.
Servidor:
Un programa o dispositivo que actúa como intermediario entre los Clientes que publican Mensajes de aplicación y los Clientes que han realizado Suscripciones. Un servidor
Acepta conexiones de red de clientes.
Acepta mensajes de aplicación publicados por clientes.
Procesa solicitudes de suscripción y cancelación de suscripción de clientes.
Reenvía mensajes de aplicación que coinciden con las suscripciones de clientes .
¿Significa esto que si un cliente se suscribe, entonces permanece conectado al servidor mientras la suscripción es válida aunque no haya flujo de datos la mayor parte del tiempo?
Llego a esta conclusión porque si el cliente se desconecta después de la suscripción, entonces un servidor no puede reenviarle mensajes porque es el cliente el que debe establecer la conexión. Pero no sabrá cuándo restablecerlo.