¿Puede un cliente MQTT suscribirse a un tema creado por sí mismo?

18

Según tengo entendido, en MQTT se crea un tema una vez que un cliente publica algo con el nombre del tema correspondiente.

No hay necesidad de configurar un tema, es suficiente publicarlo.

A partir de aquí .

¿Es posible que un cliente se suscriba a su propio tema, después de que lo publicó, lo creó? No pude encontrar ninguna restricción en las especificaciones . Tampoco figura como posible comportamiento anormal:

5.4.8 Detectar comportamientos anormales

Las implementaciones del servidor pueden monitorear el comportamiento del Cliente para detectar posibles incidentes de seguridad. Por ejemplo:

  • Intentos repetidos de conexión
  • Intentos repetidos de autenticación
  • Terminación anormal de las conexiones.
  • Escaneo de temas (intentos de enviar o suscribirse a muchos temas)
  • Envío de mensajes que no se pueden entregar (no hay suscriptores a los temas)
  • Clientes que se conectan pero no envían datos

Basado en esto, creo que ciertamente es posible. Entonces, ¿me interesan los casos de uso de esta función?

¿Por qué el estándar permite dicho mecanismo? ¿Sería complicado rastrear al propietario de los temas? Por lo tanto, simplemente permite a los clientes suscribirse a su propio tema.

Un caso de uso en el que puedo pensar es que de esta manera un cliente puede verificar sus datos publicados.

Bence Kaulics
fuente

Respuestas:

19

Sí, es posible suscribirse a un tema creado por sí mismo.

Un cliente MQTT puede ser editor y suscriptor al mismo tiempo. En términos de MQTT, un cliente incluye ambos subscribersy publishers.

Estoy interesado en cuáles son los casos de uso de esta función.

Un posible caso de uso (supongo) es que, supongamos que hay tres clientes (x, y, z) suscritos a un tema x-topiccreado por x. Cada vez que se publica un mensaje x-topic, todos los suscritos a ese tema recibirán el mensaje. Si ypublica un mensaje a un tema x-topic(supongo que se puede hacer), si xno se suscribe a ese tema a pesar de que creó el tema, no recibirá los mensajes.

Por lo tanto, un cliente debe estar suscrito a un tema para recibir mensajes a pesar de que este es el creador original de ese tema.

Pero el mecanismo puede controlarse utilizando intermediarios como medio.

bravokeyl
fuente
Sí, esta opción me pasó por la mente. Solo que no estaba seguro de si un nuevo cliente puede publicar en un tema existente, ya utilizado por otro editor.
Bence Kaulics
Sí, un nuevo cliente puede publicar en un tema existente. Recuerde que los clientes no se comunican directamente, cada publicación y suscripción se realiza a través de un corredor.
bravokeyl
0

Si.

Los clientes MQTT están conectados a un agente que puede ser una nube o algún otro dispositivo.

No existe tal cosa como la creación del tema. Se utilizan como encabezado de un mensaje. Entonces, si su cliente se ha suscrito a un tema y si publica algo sobre ese tema, el mensaje se recibirá nuevamente a través del intermediario.

Ejemplos de buenos corredores son Mosquitto para ejecutar en dispositivos y CloudMqtt para Broker basado en la nube

Hitesh Pratyush V
fuente
44
Esto realmente no expande el cuerpo de conocimiento más allá de lo que la otra respuesta ya proporcionó hace un año. Puede agregar nuevas respuestas incluso a las preguntas respondidas. Sin embargo, esas respuestas deberían ofrecer información adicional o actualizada sobre la pregunta o la solución.
Helmar