Giter VIP home page Giter VIP logo

Comments (6)

LiamBindle avatar LiamBindle commented on May 28, 2024

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.

jedidiahuang avatar jedidiahuang commented on May 28, 2024

from mqtt-c.

LiamBindle avatar LiamBindle commented on May 28, 2024

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.

jedidiahuang avatar jedidiahuang commented on May 28, 2024

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.

LiamBindle avatar LiamBindle commented on May 28, 2024

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.

LiamBindle avatar LiamBindle commented on May 28, 2024

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.