Para probar un broker MQTT desde un móvil, la vía más rápida no necesita ninguna app: abre el cliente MQTT online en Chrome para Android o en Safari para iOS, conéctate por WebSocket seguro (wss), suscríbete y publica. Para algo más profundo —TCP puro en 1883, TLS en 8883, comportamiento en segundo plano— usa una app MQTT nativa o una terminal en el dispositivo. Esta guía cubre cada enfoque y las trampas de red que solo aparecen en móviles.
¿Por qué probar desde el móvil?
Tu portátil en el Wi-Fi de la oficina no está donde están tus usuarios. Una prueba móvil responde preguntas que una de escritorio no puede:
- ¿Acepta el broker conexiones desde redes móviles, no solo desde la IP de tu oficina?
- ¿El NAT del operador y los timeouts de inactividad matan una conexión silenciosa al cabo de unos minutos?
- ¿Sobrevive la conexión de tu app al bloqueo de pantalla, al cambio de app y al cambio de red (Wi-Fi → 4G/5G)?
- ¿Se validan los certificados en el almacén de confianza del móvil, que puede ser distinto del de tu escritorio?
Opción 1 — El navegador, por WSS
Los navegadores móviles soportan WebSockets, así que MQTT sobre WebSockets funciona exactamente igual que en escritorio.
- En el móvil, abre testmqtt.com/client.
- Deja el protocolo en WSS. Para tu propio broker, elige Custom broker… e introduce el host
broker.connectmq.com, el puerto8084, la rutamqtty las credenciales de tu usuario de prueba. - Suscríbete a un topic único como
testmqtt/phone-4c21/#y publica entestmqtt/phone-4c21/hello.
Para no teclear en un teclado pequeño, construye el enlace en el portátil y ábrelo en el móvil (envíatelo o conviértelo en un código QR):
https://testmqtt.com/client?url=wss://broker.connectmq.com:8084/mqtt&topic=testmqtt/phone-4c21/%23Después publica desde el portátil y observa cómo lo recibe el móvil: eso demuestra la ruta completa desde un cliente de escritorio, a través del broker, hasta una red móvil:
mosquitto_pub -h broker.connectmq.com -p 1883 \
-t testmqtt/phone-4c21/hello -m "from laptop" -q 1Cambia el móvil de Wi-Fi a datos móviles y repite. Si funciona en una y no en la otra, tienes un problema de red, no del broker. La versión paso a paso para escritorio está en prueba un broker MQTT desde tu navegador.
Opción 2 — Apps MQTT nativas
Las apps nativas abren sockets TCP y TLS reales, así que prueban los mismos puertos que usan tus dispositivos. Ambas tiendas ofrecen varios clientes MQTT de uso general y apps de dashboards: en Android, apps como MyMQTT, MQTT Dash e IoT MQTT Panel; en iOS, apps como MQTTool e IoT MQTT Panel. La disponibilidad y las funciones cambian, así que revisa la ficha de la tienda y prefiere apps que te permitan:
| Capacidad | Por qué importa para probar |
|---|---|
| TCP y TLS (8883) | Probar el puerto que usan realmente tus dispositivos |
| Opciones de CA / certificado propios | CAs privadas y certificados de cliente |
| Usuario / contraseña | Brokers autenticados y comprobación de ACLs |
| Elección de MQTT 3.1.1 / 5 | Coincidir con el firmware de tus dispositivos |
| Suscripción con wildcards | Observar todo el subárbol de un dispositivo |
| Opciones de retain y QoS | Reproducir el comportamiento real de los dispositivos |
Usa un usuario de prueba dedicado con ACLs limitadas a topics de prueba: las apps móviles suelen guardar las credenciales en el dispositivo.
Opción 3 — Una terminal en el móvil
En Android, Termux te da un entorno Linux con los clientes de línea de comandos de Mosquitto:
pkg install mosquitto
mosquitto_sub -h broker.connectmq.com -p 1883 -t 'testmqtt/phone-4c21/#' -v &
mosquitto_pub -h broker.connectmq.com -p 1883 -t testmqtt/phone-4c21/hello -m "from termux"Los mismos comandos funcionan con -p 8883 y --capath o --cafile para TLS (apuntando a un bundle de CAs que tengas en el dispositivo). En iOS, las apps de terminal son más limitadas; para scripting en iPhone suele ser más sencillo usar una app nativa o el navegador. Una vez que la CLI funciona, todo lo de ejemplos de mosquitto_pub y mosquitto_sub también sirve en el móvil.
Probar tu propia app: emuladores y simuladores
Cuando la app que estás desarrollando no conecta, averigua si es el código o la red:
- Emulador de Android:
localhostdentro del emulador es el propio emulador. Usa10.0.2.2para llegar a un broker que corre en tu máquina de desarrollo. - Simulador de iOS: comparte la pila de red del Mac, así que
localhostllega a un broker en el Mac. Un iPhone físico no: necesita la IP de red local del Mac. - Dispositivos físicos: el broker debe escuchar en la interfaz de red local, no solo en
127.0.0.1(Mosquitto 2.x sin listener configurado solo acepta conexiones locales), y el firewall del host debe permitir el puerto.
Las reglas de la plataforma también pueden bloquear conexiones en texto plano en tu app. La configuración de seguridad de red de Android bloquea por defecto el tráfico cleartext en las pilas basadas en HTTP, lo que afecta a ws://; App Transport Security de iOS se aplica a las conexiones basadas en URLSession, incluidos los WebSockets. Usa wss:// o TLS (8883) en lugar de añadir excepciones. La configuración específica de cada librería está en MQTT en Android con Kotlin y MQTT en iOS con Swift.
Trampas de las redes móviles
| Síntoma | Causa probable | Qué probar |
|---|---|---|
| Funciona por Wi-Fi, timeout con datos móviles | La red restringe los puertos 1883/8883 | Prueba WSS en 443 si tu broker lo ofrece; consulta al operador/MDM |
| La conexión cae tras unos minutos en silencio | Timeout de inactividad del NAT del operador | Keep alive por debajo del timeout (p. ej. 30–60 s); consulta timeouts de NAT |
| Se desconecta cada vez que se bloquea la pantalla | El sistema suspende la app | Es lo esperado; diseña para reconectar + sesiones persistentes |
| Ráfaga de reconexiones al cambiar de red | La IP cambia en el handover | Reconexión limpia con backoff, mismo client ID |
Connection refused solo desde el móvil | Broker ligado a localhost o regla de firewall | Escucha en 0.0.0.0, abre el puerto, prueba con nc desde otra máquina |
| Error de certificado en el móvil, bien en escritorio | Falta un intermedio o la CA es privada | Sirve la cadena completa; instala la CA en los dispositivos de prueba |
Para pruebas realistas de redes inestables en el laboratorio, consulta probar MQTT en condiciones de red móvil.
Un plan de prueba móvil de cinco minutos
- Navegador del móvil por Wi-Fi: conecta por WSS, suscríbete, publica, recibe.
- La misma prueba con datos móviles.
- Publica desde el portátil y recibe en el móvil (y al revés).
- App nativa o Termux: repite por TCP 1883 y TLS 8883 con tus credenciales reales.
- Deja una suscripción inactiva diez minutos; comprueba si sobrevive.
- Bloquea la pantalla, cambia de red, desbloquea: confirma que tu app se reconecta y se vuelve a suscribir.
Probar desde un móvil lleva minutos y detecta problemas que ninguna prueba de escritorio verá: puertos bloqueados en datos móviles, timeouts de NAT, apps dormidas y cadenas de certificados que solo fallan en el almacén de confianza del dispositivo. Empieza en el navegador móvil por WSS y pasa después a un cliente nativo para los puertos y el comportamiento de los que depende tu app.
Preguntas frecuentes
¿Cuál es la forma más rápida de probar un broker MQTT desde el móvil?
Abre un cliente MQTT online como testmqtt.com/client en el navegador del móvil y conéctate por WebSocket seguro (wss, a menudo en el puerto 8084 o 443). Funciona igual en Chrome para Android y en Safari para iOS y no requiere instalar ninguna app.
¿Por qué mi móvil no llega al broker MQTT que corre en mi portátil?
localhost en el móvil es el propio móvil. Usa la IP de red local del portátil, asegúrate de que ambos están en la misma red, de que el broker escucha en todas las interfaces y no solo en 127.0.0.1, y de que el firewall del portátil permite el puerto.
¿Por qué MQTT funciona por Wi-Fi pero no con datos móviles?
Algunas redes móviles y de invitados restringen puertos que no son web, como 1883 y 8883, y el NAT del operador puede cortar rápido las conexiones inactivas. Prueba el puerto 443 o WebSockets sobre 443 si está disponible y usa un keep alive menor que el timeout de inactividad de la red.

