AsyncMqttClient buffers outgoing messages in a queue. On sending data is copied to a raw TCP buffer. Received data is passed directly to the API.
You can send data as long as memory permits. A minimum amount of free memory is set at 4096 bytes. You can lower (or raise) this value by setting MQTT_MIN_FREE_MEMORY
to your desired value.
If the free memory was sufficient to send your packet, the publish
method will return a packet ID indicating the packet was queued. Otherwise, a 0
will be returned, and it's your responsability to resend the packet with publish
.
No incoming data is buffered by this library. Messages received by the TCP library is passed directly to the API. The max receive size is about 1460 bytes per call to your onMessage callback but the amount of data you can receive is unlimited. If you receive, say, a 300kB payload (such as an OTA payload), then your onMessage
callback will be called about 200 times, with the according len, index and total parameters. Keep in mind the library will call your onMessage
callbacks with the same topic buffer, so if you change the buffer on one call, the buffer will remain changed on subsequent calls.