¿Por qué usar MQTT para internet de cosas cuando uno puede usar sockets web o encuestas largas?

Las encuestas largas son, casi siempre, una mala idea, ya que es mucho más eficiente si la parte que conoce los datos y sus actualizaciones notificará a cada cliente. Esto es aún más cierto cuanto más clientes tenga. Piense en la eficiencia en un único servidor que envía datos a 500 clientes a través de encuestas de más de 500 clientes, es decir, haciendo solicitudes, contra el servidor con un intervalo establecido. Esas son muchas solicitudes que harán que su servidor sea más lento para que lo visiten los clientes / clientes reales.

La diferencia entre websocket y MQTT es mucho menor, ya que MQTT puede utilizar websockets como protocolo de comunicación subyacente. Pero MQTT es más de FedEx y el zócalo de la calle usando la entrega posterior en sentido figurado.

MQTT le ofrece las ventajas de las colas de pub / sub y mensajes: garantía de entrega, posibilidad de tener persistencia en el servidor, etc.

MQTT a menudo estipula MQTT sobre UDP, pero no siempre.

De todos modos, MQTT es un protocolo de aplicación “pub sub” (publicación, suscripción) en lugar de un protocolo de aplicación REST, del tipo común utilizado en aplicaciones web. Básicamente, la diferencia aquí es empujar contra tirar. Algunas aplicaciones son mejores con push, otras con pull.

Sin embargo, el principal beneficio viene con UDP. Puede leer todo sobre UDP vs. TCP en toda la web, e incluso Quora también.

¿Cómo se decide entre TCP y UDP? ¿Qué tipos de aplicaciones son más apropiadas para una sobre la otra?

MQTT es un protocolo de mensajería. Se puede implementar a través de TCP, WebSocket o incluso sondeos largos (pero no sugeriría sondeos largos). Hay muchos ejemplos de uso de MQTT sobre WebSocket para enviar a un navegador web.

MQTT es un protocolo muy ligero. Lo que significa que es el protocolo ideal para usar en estas pequeñas Internet que tienen capacidades de procesamiento extremadamente bajas y batería también.