feat: add support for binary messages #97
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
I'm creating a basic client library to use with Golioth Platform. We recently added a new gateway to support MQTT devices and that allows us to add support to CircuitPython.
But while developing the client, we had issues with one of our services meant for Over the Air Updates, which serves not only for the main device firmware, but you can send any arbitrary artifact ( like images/bitmap in my testing here). Currently, this MQTT library tries to convert all messages to a Unicode string, which unfortunately fails for binary data. Reference to where it fails: https://github.com/adafruit/Adafruit_CircuitPython_MiniMQTT/blob/main/adafruit_minimqtt/adafruit_minimqtt.py#L843
So what I'm proposing here is to add an optional parameter called
use_binary
, that would allow users to use the MQTT client in binary mode and return the rawbytearray
message. Them is up to the user to convert to a string as needed.