MQTT 클라이언트가 자체적으로 작성된 주제를 구독 할 수 있습니까?


18

내 이해에 따르면 MQTT에서는 클라이언트가 해당 주제 이름으로 무언가를 게시하면 주제가 작성됩니다.

주제를 구성 할 필요가 없으며, 주제를 게시하면 충분합니다.

에서 여기 .

클라이언트가 자신의 주제를 구독 한 후 게시 한 후 생성 할 수 있습니까? 사양 에서 이에 대한 제한을 찾을 수 없습니다 . 가능한 이상 행동으로 나열되지 않았습니다 :

5.4.8 비정상적인 행동 탐지

서버 구현은 잠재적 인 보안 사고를 감지하기 위해 클라이언트 동작을 모니터링 할 수 있습니다. 예를 들면 다음과 같습니다.

  • 반복 된 연결 시도
  • 반복적 인 인증 시도
  • 연결이 비정상적으로 종료 됨
  • 주제 스캔 (많은 주제를 보내거나 구독하려고 함)
  • 전달할 수없는 메시지 보내기 (주제 구독자 없음)
  • 연결했지만 데이터를 보내지 않는 클라이언트

이를 바탕으로 확실히 가능하다고 생각합니다. 이 기능의 사용 사례에 관심이 있습니까?

표준이 그러한 메커니즘을 허용하는 이유는 무엇입니까? 주제의 소유자를 추적하는 것이 복잡합니까? 대신 클라이언트가 자신의 주제를 구독 할 수 있습니다.

내가 생각할 수있는 한 가지 유스 케이스는 클라이언트가 공개 된 데이터를 확인할 수있는 방법입니다.

답변:


19

예, 자체적으로 생성 된 주제를 구독 할 수 있습니다.

MQTT 클라이언트는 동시에 발행자 및 구독자 일 수 있습니다. MQTT 용어로, 클라이언트가 모두 포함 subscribers하고 publishers.

이 기능의 사용 사례에 관심이 있습니까?

가능한 유스 케이스 (나는 가정)는에 x-topic의해 생성 된 주제에 가입 된 세 개의 클라이언트 (x, y, z)가 있다고 가정합니다 x. 에 메시지가 게시 될 때마다 x-topic해당 주제를 구독 한 모든 사람이 메시지를받습니다. 경우 y주제에 메시지를 게시 x-topic하면, (나는 수행 할 수 있습니다 가정) x는,이 메시지를 수신하지 않습니다 항목을 생성에도 불구하고 그 주제에 가입하지 않습니다.

따라서 해당 주제의 원래 작성자 인 경우에도 메시지를 수신하려면 주제를 구독해야합니다.

그러나 브로커를 매체로 사용하여 메커니즘을 제어 할 수 있습니다.


예,이 옵션은 제 생각을 넘어 섰습니다. 새 고객이 다른 게시자가 이미 사용중인 기존 주제에 게시 할 수 있는지 확실하지 않았습니다.
Bence Kaulics

예, 새 고객이 기존 주제에 게시 할 수 있습니다. 클라이언트는 직접 통신하지 않으며 모든 게시 및 구독은 브로커를 통해 발생합니다.
bravokeyl

0

예.

MQTT 클라이언트는 클라우드 또는 다른 디바이스 일 수있는 브로커에 연결됩니다.

주제 만들기와 같은 것은 없습니다. 메시지의 제목으로 사용됩니다. 따라서 클라이언트가 주제를 구독하고 해당 주제에 대해 게시 된 것이 있으면 브로커를 통해 클라이언트로 메시지가 다시 수신됩니다.

좋은 브로커의 예는 디바이스에서 실행하기위한 모기 및 클라우드 기반 브로커의 경우 CloudMqtt입니다.


4
이것은 실제로 다른 해답이 이미 1 년 전에 제공 한 것 이상으로 지식의 본문을 확장 시키지는 않습니다. 답변 된 질문에도 새로운 답변을 추가 할 수 있습니다. 그러나 이러한 답변은 질문 또는 솔루션에 대한 추가 또는 업데이트 된 통찰력을 제공해야합니다.
Helmar
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.