En resumen
Utiliza MQTT para dispositivos IoT con batería limitada, redes poco fiables o patrones de mensajería pub-sub. Utiliza HTTP para API web/móviles estándar. MQTT usa cabeceras de 2 bytes frente a los más de 100 bytes de HTTP, lo que lo hace ideal para dispositivos con restricciones. Modern PetstoreAPI implementa MQTT para collares de seguimiento de mascotas y comederos inteligentes.
Introducción
Tu collar de seguimiento de mascotas necesita enviar actualizaciones de ubicación cada 5 minutos. Funciona con una pila de botón que debería durar 6 meses. Usando HTTP, la pila se agota en 2 semanas. Usando MQTT, dura los 6 meses completos.
HTTP es estándar para las API, pero está diseñado para navegadores web, no para dispositivos IoT. MQTT (Message Queuing Telemetry Transport) fue construido para dispositivos con restricciones, ancho de banda limitado y redes poco fiables.
Modern PetstoreAPI utiliza HTTP para aplicaciones web y móviles, pero MQTT para dispositivos IoT: collares de seguimiento de mascotas, comederos inteligentes y monitores de salud.
En esta guía, aprenderás cuándo MQTT supera a HTTP, verás ejemplos reales de Modern PetstoreAPI y descubrirás cómo elegir el protocolo adecuado para tu caso de uso.
¿Qué es MQTT?
MQTT es un protocolo de mensajería pub-sub ligero diseñado para IoT.
Cómo funciona MQTT
Los dispositivos publican mensajes en temas. Otros dispositivos se suscriben a temas:
Publisher (Pet Collar):
Topic: pets/019b4132/location
Payload: {"lat":37.7749,"lng":-122.4194,"battery":85}
Subscriber (Mobile App):
Subscribe to: pets/019b4132/location
Receives: {"lat":37.7749,"lng":-122.4194,"battery":85}
El Broker MQTT se sitúa en el centro, enrutando los mensajes de los publicadores a los suscriptores.
Características clave de MQTT
1. Cabeceras minúsculas - MQTT: 2 bytes, HTTP: 100-500 bytes
2. Conexiones persistentes - MQTT mantiene las conexiones abiertas
3. Calidad de Servicio (QoS) - QoS 0/1/2 para garantías de entrega
4. Mensaje de Última Voluntad - Mensaje enviado si el dispositivo se desconecta inesperadamente
5. Mensajes retenidos - El broker almacena el último mensaje para nuevos suscriptores
Comparación MQTT vs HTTP
| Característica | MQTT | HTTP |
|---|---|---|
| Tamaño de la cabecera | 2 bytes | 100-500 bytes |
| Patrón | Pub-Sub | Petición-Respuesta |
| Conexión | Persistente | Por petición |
| Ancho de banda | Muy bajo | Mayor |
| Impacto en la batería | Mínimo | Significativo |
| Soporte del navegador | Vía WebSocket | Nativo |
Ejemplo de ancho de banda
1000 actualizaciones de ubicación por día:
- HTTP: 420 KB diarios, 12.6 MB mensuales
- MQTT: 52 KB diarios, 1.56 MB mensuales
MQTT usa 8 veces menos ancho de banda.
Cuándo MQTT Gana
1. Dispositivos IoT con batería limitada
Collar de seguimiento de mascotas:
- MQTT: 6 meses de duración de la batería
- HTTP: 2 semanas de duración de la batería
Por qué: Conexión persistente, cabeceras minúsculas, menos tiempo de radio.
2. Redes poco fiables
Dispositivos IoT celulares con cobertura irregular:
- QoS para entrega garantizada
- Reconexión automática
- Persistencia de sesión
3. Comunicación de muchos a muchos
Escenario de comedero inteligente para mascotas:
Feeder 1 → pets/019b4132/feeding
Feeder 2 → pets/019b4127/feeding
App 1 → se suscribe a pets/+/feeding (todas las mascotas)
App 2 → se suscribe a pets/019b4132/feeding (una mascota)
4. Datos de sensores en tiempo real
Monitor de salud de mascotas enviando actualizaciones cada segundo:
- Conexión persistente (sin sobrecarga)
- Latencia mínima
- Eficiente para actualizaciones de alta frecuencia
Cuándo HTTP Gana
1. Aplicaciones web/móviles estándar
HTTP es universal:
- Cada lenguaje tiene librerías HTTP
- Los navegadores lo soportan nativamente
- Los proxies y cortafuegos lo permiten
2. Patrones de Petición-Respuesta
Obtener detalles de mascotas:
GET /pets/019b4132
200 OK
{"name":"Fluffy","species":"CAT"}
HTTP es más simple para petición-respuesta.
3. Requisitos de Caching
El caching HTTP funciona de forma predeterminada:
- Caching del navegador
- Caching de CDN
- Caching de proxy
MQTT no tiene caching.
4. APIs RESTful
Códigos de estado, métodos y semántica HTTP:
- 200 OK, 404 Not Found, 201 Created
- GET, POST, PUT, DELETE
- Manejo de errores estándar
Cómo Modern PetstoreAPI usa MQTT
Modern PetstoreAPI implementa MQTT para dispositivos IoT.
Collares de seguimiento de mascotas
El collar publica la ubicación:
Topic: pets/019b4132/location
QoS: 1 (al menos una vez)
Payload: {
"lat": 37.7749,
"lng": -122.4194,
"battery": 85,
"timestamp": "2026-03-13T10:30:00Z"
}
La aplicación móvil se suscribe:
const mqtt = require('mqtt');
const client = mqtt.connect('mqtts://mqtt.petstoreapi.com');
client.subscribe('pets/019b4132/location');
client.on('message', (topic, message) => {
const location = JSON.parse(message);
updateMap(location.lat, location.lng);
});
Comederos Inteligentes
El comedero se suscribe al horario:
Topic: pets/019b4132/feeding-schedule
Retained: true
Payload: {
"times": ["08:00", "18:00"],
"amount": 100
}
El comedero publica eventos de alimentación:
Topic: pets/019b4132/feeding-events
Payload: {
"timestamp": "2026-03-13T08:00:15Z",
"amount": 100,
"dispensed": true
}
Monitores de salud
El monitor publica los signos vitales:
Topic: pets/019b4132/health
QoS: 0 (enviar y olvidar, alta frecuencia)
Payload: {
"heartRate": 120,
"temperature": 38.5,
"activity": "resting"
}
Probando MQTT con Apidog
Apidog soporta pruebas MQTT junto con HTTP y otros protocolos.
Probar MQTT Pub-Sub
- Conectarse al broker MQTT
- Suscribirse a temas
- Publicar mensajes de prueba
- Validar formato de mensaje
- Probar niveles de QoS
Simular Fallos de Red
- Probar lógica de reconexión
- Verificar entrega QoS 1/2
- Comprobar mensajes de Última Voluntad
- Validar persistencia de sesión
Comparar con HTTP
Probar la misma funcionalidad con ambos protocolos:
- Medir el uso de ancho de banda
- Comparar latencia
- Verificar consistencia de datos
Conclusión
MQTT y HTTP sirven para propósitos diferentes. Utiliza MQTT para dispositivos IoT con recursos limitados. Utiliza HTTP para API web/móviles estándar.
Modern PetstoreAPI muestra cómo usar ambos: HTTP para API orientadas al usuario, MQTT para dispositivos IoT. El protocolo adecuado depende de tus restricciones, no de cuál sea "mejor".
Prueba ambos protocolos con Apidog para encontrar la mejor opción para tu caso de uso.
Preguntas Frecuentes
¿Puede MQTT funcionar sobre HTTP?
MQTT puede ejecutarse sobre WebSocket, que funciona sobre HTTP. Esto ayuda con la travesía de cortafuegos pero pierde algunos beneficios de eficiencia de MQTT.
¿Cuáles son los niveles de QoS de MQTT?
- QoS 0: Como máximo una vez (sin acuse de recibo)
- QoS 1: Al menos una vez (acuse de recibo, puede duplicarse)
- QoS 2: Exactamente una vez (garantizado, sin duplicados)
¿Es seguro MQTT?
Sí, MQTT soporta cifrado TLS (MQTTS) y autenticación con nombre de usuario/contraseña. Modern PetstoreAPI usa MQTTS para todos los dispositivos IoT.
¿Pueden los navegadores usar MQTT?
Los navegadores pueden usar MQTT sobre WebSocket. Librerías como MQTT.js soportan entornos de navegador.
¿Cómo se compara MQTT con WebSocket?
MQTT es un protocolo que puede ejecutarse sobre WebSocket. WebSocket es una capa de transporte. MQTT añade características de pub-sub, QoS y específicas de IoT sobre WebSocket.
