我想用 C++ 实现一个 MQTT 客户端功能(它需要是线程安全的,并且能够订阅主题和发布,但不需要代理功能)。
我正在考虑Eclipse 的Paho MQTT。 这是他们的下载页面。
我发现他们没有 MQTT5.0 支持。
然而,在他们的github 上:有一个 C++ 包装器,它在 1.1 版中声明了 MQTTv5.0 支持。
然后我发现了这个问题:Mosquitto vs eclipse paho client library,结论是:
将 libmosquitto 与libmosquittopp包装器一起使用
我检查了 libmosquittopp.h:所有函数都被标记为已弃用,所以我认为到目前为止它不是正确的方法。
为什么不推荐使用 libmosquittopp?因为
包装器是由外部请求产生的,在创建它时,没有其他适用于 MQTT 的 C++ 解决方案。这在过去几年中发生了变化,与真正的 C++ 库或使用纯 C libmosquitto 相比,此包装器没有任何好处。
那么,Paho 现在是否被认为是在 C++ 中使用 MQTT 的正确方向?
或者我只使用 Mosquitto 的纯 C 库?
或者,还有什么(除了从 0 开始写)?
我正在关注https://aws.amazon.com/blogs/iot/just-in-time-registration-of-device-certificates-on-aws-iot/并在执行以下命令时遇到问题:
$ mosquitto_pub --cafile root.cert --cert deviceCertAndCACert.crt --key deviceCert.key -h .iot.us-east-1.amazonaws.com -p 8883 -q 1 -t foo/bar -i anyclientID -- tls-版本 tlsv1.2 -m "你好" -d
它给了我错误
Error: Problem setting TLS options.
Run Code Online (Sandbox Code Playgroud)
我找不到这个错误的含义以及如何修复它。我需要在我的 unbutu 16.04 上“安装”TLSv1.2 吗?实际上没有关于如何安装TLS1.2的信息。有一些关于为 apache 或 nginx 等启用 TLSv1.2 的信息。Unbutu 内置了 TLSv1.2 吗?
我在本地机器上为MQTT安装了mosquitto客户端.我有以下配置:
listener 1883
protocol mqtt
listener 9001
protocol websockets
Run Code Online (Sandbox Code Playgroud)
在mqtt和websockets上运行客户端有什么区别.如果我将侦听器更改为端口,还有什么区别?