Skip to content

automatically sending messages

Takatoshi Kondo edited this page Jun 4, 2019 · 5 revisions

After connack

If a client has the previous connection that set clean_session to false and the client has inflight messages, then the inflight messages are automaticall sent after connack message is received.

NOTE: inflight message means publish message or pubrel message that aren't received the corresponding response messages.

Publish response

MQTT publish sequence

MQTT protocol defines the following publish sequence:

  • QoS0
sender direction receiver
publish ->
  • QoS1
sender direction receiver
publish ->
<- puback
  • QoS2
sender direction receiver
publish ->
<- pubrec
pubrel ->
<- pubcomp

auto_pub_response is for QoS1 and QoS2. puback on QoS1, pubrec, pubrel, and pubcomp on QoS2 are auto_pub_response target messages. If auto_pub_response is enabled, then those messages are automatically sent.

auto_pub_response is enabled by default. You can enable/disable auto_pub_response using set_auto_pub_response() function.

If you implement typical MQTT client application, auto_pub_response helps avoiding bothersome implementation. If you implement MQTT broker, you might want to check publish permission. In this case, disabling auto_pub_response helps detailed implementation. You can send response messages such as puback manually.

Ping

If you call set_keep_alive_sec() or set_keep_alive_sec_ping_ms() member functions, then start sending pingreq automatically.