por Ponlakshmi
¿Sabías que después de que un cliente se desconecta, el corredor de MQTT puede almacenar nuevos mensajes para ese cliente? Los mensajes serán enviados tan rápido como el cliente vuelva a conectarse.MQTT Persistente sesión " mensaje queuinges el nombre de esta característica enMQTT. En este post, describiré cómo es actúa. Veamos esto más de cerca.
MQTTPersistentes períodos de sesionescomo se ha indicado anteriormente, el intervalo de expiración especifica cuánto tiempo debe mantenerse el período de sesiones después de un desconectar. Considere el siguiente escenario: Supongamos que tienes dosMQTT clientesque son ambos conectado a unMQTT broker. Un cliente MQTT está publicando un tema, mientras que el otro lo suscribe. Si el cliente de suscripción desconexión de los bróker inesperadamente, no recibirá ningún mensaje publicado a ese tema hasta que vuelva a conectarse.
Al conectarse con el broker, utilizamos las banderas Persistent Session o Clean Session para resolver esto problema. Cuando un cliente se conecta al corredor, el cliente tiene la opción de solicitar una sesión persistente. El broker hará un seguimiento de la información del cliente, así como de los temas a los que está suscrito. El corredor Lo haré. transmitir todos los mensajes no entregados al cliente cuando el cliente vuelva a conectarse después de una desconexión.
Cuando un cliente se conecta al corredor, el cliente puede crear una sesión persistente estableciendo el CleanSession flag to False. Este ajuste se establece en True por defecto. Echemos un vistazo a lo que una sesión persistente almacena.
Cuando un cliente necesita recibir todos (o / y casi todos) de los mensajes de un tema al que tiene suscrito y el Internet no es confiable, es esencial utilizar una sesión permanente.
Veamos cómo manejar las sesiones persistentes del lado cliente. Si quieres una sesión de MQTT persistente y díselo el corredor que quiero período de sesiones persistente en elPaquete CONNACK, hay una pequeña bandera llamada sesión persistente y el corredor le dice como cliente si el corredor te recuerda como cliente o si el corredor cree que estás conectado para el primer tiempo. Y esto le proporciona una manera conveniente en el lado del cliente para determinar si necesita volver a suscribirse a suTemas del MQTTo si el corredor ya tiene información sobre usted. Así que esto es algo en lo que mirar, y la mayoría de las bibliotecas te permite comprobar sesiones limpias paracrear MQTTclientsque son resistentes.
Luego hay un mensaje queruing, que es único al MQTT. Utilizar estos mensajes puede ser consultado por cliente. Sólo para clientes de sesión persistentes, puede utilizar mensajes de búsqueda. Si tiene una suscripción activa y una cliente de sesión persistente que está desconectado del corredor, el corredor colará todoscalidad de servicio (QoS 1 o 2)mensajes que perdiste mientras desconectaste. Esto significa que si estás desconectado por un tiempo y luego reconectar, el corredor recibirá mensajes que te perdiste, así que incluso si estás conectado en el lado cliente, obtendrás el más actualizado información y no faltará un mensaje. Así que esto es realmente genial, pero necesitas una sesión persistente aquí y necesitas usar el calidad de servicio uno o dos mensajes aquí. Tenga en cuenta que los mensajes con uncalidad de servicio de ceronunca se apagan.
Ya hemos discutido sesiones persistentes y búsqueda de mensajes. Es posible que si su corredor de MQTT no tiene expiración sesiones, sesiones persistentes o colas, usted es susceptible a la negación de ataques de servicio. Así que, si eres trabajando en un proyecto profesional, asegúrese de tener un MQTT que soporta todas las operaciones importantes y configuraciones.
Para obtener más información sobre el protocolo,