Comments (6)
Hi Jedidiahuang,
You have a good point, once MQTT_ERROR_SEND_BUFFER_IS_FULL
is set it will never be cleared (but it should). Just to clarify, are you running simple_publisher.c which runs on two threads or have you adapted it to run in a single thread?
from mqtt-c.
from mqtt-c.
I believe I've located the bug causing the first two bytes of the application message to be garbage for QoS 0 but I'd prefer to keep that discussion to the issue #8 thread (it will be fixed asap).
Regarding this issue (#7) I worked on it for a while last night and I believe I have a fix. I will update you in the next couple days (but automatic recover from MQTT_ERROR_SEND_BUFFER_IS_FULL
should be relatively easy to implement).
Just as a note (for you or anyone else reading this thread) in general the safest way to handle error in MQTT-C (in my opinion) is to: (1) terminate the connection with the broker, (2) do any corrections if the error occured client-side (e.g. increase size of sendbuf
), and (3) reestablish the connection to the broker.
Section 4.8 of the standard (line 1474-1484 of mqtt-v3.1.1.pdf) says that transient error should cause the client to disconnect. Currently, MQTT-C does not do this DISCONNECT upon going into an error state but this should be implemented.
I will update you in the next couple of days.
Best regards,
Liam
from mqtt-c.
Dear Liam,
I'm going to adopt your MQTT-C in my IoT embedded application for machine Data acquisition.
This is the best embedded MQTT Client API I've ever learned.
I'd suggest you to add one more argument,say, Reconnect, in mqtt_connect() API , to make MQTT TCP Socket connection be auto reconnected once connection is broken, instead of exit program and losing data.
My reason is that most IoT application is always keep running silently in a small box controller. Once connection is broken, we have better to make MQTT connection be auto-reconnected instead of exit application.
For example, an IoT DAQ project, application will send event or production information periodically.
Such as keep counting of yield quantity of machine's production and monitor Alarm trigger.
In such application, if connection is broken and application must shutdown and re-spawned then all critical yield data will be lost.
Another feature is let MQTT-C has Open SSL/TSL encryption capability, since most of MQTTClient API would support this issue.
If this improvements are achieved, this MQTT API will be highly appreciated.
However, thanks for your great contributions.
Best Regards,
Victor
from mqtt-c.
That's great! Thank you, I'm glad you like it. I like both of your suggestions—I think SSL/TLS support would be a good addition, and the automatic reconnection sounds good too but I might need some clarification on what you mean.
I'm going to suggest we move those discussions to their own issues, however.
Regards,
Liam
from mqtt-c.
I'm going to close this issue because I think it fits into the Automatic reconnect enhancement. If anyone feels differently, please feel free to re-open this issue.
from mqtt-c.
Related Issues (20)
- Would reconnect_publisher be a thing? HOT 3
- Adding contex to callbacks HOT 1
- Insufficient validation of PUBLISH message HOT 2
- Possible undefined behaviour/bad memory access after reconnect HOT 2
- MQTT_ERROR_SEND_BUFFER_IS_FULL due to transient MQTT_ERROR_SOCKET_ERROR
- FPU-Trap when calculating client->typical_response_time
- mqtt_publish return value causes mqtt_error_str when not connected
- mqtt_publish seems to only send QoS 0 HOT 1
- Possible bug in MQTT_CLIENT_TRY_PACK macro
- MQTT-C Security Issue Report (mqtt_unpack_publish_response) HOT 2
- swap use of double variables to float HOT 1
- How to check the client has received a Connack from the Broker after connect() HOT 7
- how to check network connection state in inspector callback
- Signed integer overflow in `mqtt_error_str()` HOT 2
- We cannot pass the context of the program to mqtt publish_callback HOT 2
- Mingw compile error
- Memory alignment in Keil ARM Compiler (thumb instruction set)
- mqtt_connect does not generate a client.error if wrong username and/or password is provided
- Unable to connect openssl_publisher example to HiveMQ HOT 2
- Windows MSYS2 MINGW64: Examples fail with "MQTT_ERROR_SOCKET_ERROR" or "Failed to open socket: : No error"
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from mqtt-c.