클라이언트가 로컬 DB에 보낸 메시지를 유지할 MQTT 서버를 설정하려고합니다. 각 메시지에는 수신 된 클라이언트가 각 메시지 (QOS = 1)에 대해 puback을 반환 할 때 반전시키고 자하는 "성공적으로 수신 된"플래그가 있습니다.MQTT : puback이 어떤 메시지인지 알 수있는 방법은 무엇입니까?
질문 : 내가 메시지를 게시 할 때
는 서버가 제대로 수신 클라이언트에서 다시 puback를받습니다. 그러나 messageId는 클라이언트의 패킷을 게시하는 것과 다릅니다. 나는 이것이 의도 된 것임을 안다. 그렇지만 DB에서 올바른 메시지를 찾아 플래그를 넘길 수는 없습니다. 클라이언트 A가 클라이언트 B에게 QOS = 1 인 2 개의 메시지를 연속적으로 보내는 경우 어떻게됩니까? 서버는 2 개의 puback을 어떻게 구별합니까?
아마도 MQTT 클라이언트는 내가 누락 된 messageIds를 맵핑하기 위해 마술처럼 행동하고있을 것입니다.
mqttjs 및 paho mqttv3 btw를 사용하고 있습니다.
문제를 파악했습니다. 분명히 MQTT 서버에서 공개중인 메시지에 특별히 messageId를 지정해야합니다. 그렇지 않으면 임의 번호가 사용되며 puback의 messageId가 server.messageId와 다른 서버로 다시 전송됩니다. 특별히 메시지 ID를 부여한 후, puback의 messageId는 게시 할 때 지정한 messageId와 동일합니다. 이것이 의도 된 것입니까? – asonofdevily