MQTT之NanoSDK-Windows篇
1、前言
最近在学习MQTT过程中使用NanoMQ。我个人下载的是nanomq-0.25.5-windows-x86_64.zip,下载 NanoMQ,里面包含服务端和客户端两个程序。本篇需要使用NanoMQ提供的服务端。同时我也下载了MQTTX作为客户端,带图形界面,个人使用版本MQTTX-Setup-1.13.0-x64.exe,MQTTX 下载。服务端启动:在bin目录下打开命令窗口,使用命令nanomq start --url '127.0.0.1:1883' --conf D:\software\MQTT\config\nanomq.conf,如下图。nanomq.conf在解压安装nanomq时,放在config目录下。客户端可以使用MQTTX,也可以使用nanomq的客户端,也可以同时使用。个人尝试开启两个客户端命令窗口,一个发布一个订阅。MQTTX也建立两个客户端连接,同样也是一个发布另一个订阅,功能甚是强大。发现这个软件还是开源项目,格局打开。GitHub项目地址nanomq/nanomq:一款超轻量且极速的边缘和软件自带(SDV)消息总线/MQTT 代理。浏览过程中发现有个NanoSDK的开源项目链接nanomq/NanoSDK: NanoSDK - MQTT 5.0-compliant SDK with QUIC support in NNG flavor,这正是本篇正题。 网上查找了很多资料也没有关于Windows上使用源码构建的博文,于是书写本文进行记录。
2、克隆项目并安装依赖
git clone https://github.com/emqx/NanoSDK cd NanoSDK git submodule update --init --recursive
3、使用CMake GUI进行程序构建

4、打开工程编译项目,并安装nng库

5、使用CMake GUI构建Demo下的mqtt示例工程。我当时找了很久,怎么没有Demo目录下的示例。后面搜索资料才知道需要依赖nng库才行。

6、点击Generate-》Open project。打开mqtt示例工程并编译,再输出路径下打开命令窗口,输入命令mqtt_client.exe sub "mqtt-tcp://127.0.0.1:1883" 2 "client"开启订阅。但是发现MQTTX发布消息到client中,程序始终无法收到消息。询问Deekseek,因为该示例订阅是异步的,程序在收到订阅确认(SUBACK)之前就已经进入了接收循环,导致可能错过了消息.于是对代码进行了修改。

7、发布和订阅
mqtt_client.exe pub "mqtt-tcp://127.0.0.1:1883" 2 world "Hi" 1000 //发布
mqtt_client.exe sub "mqtt-tcp://127.0.0.1:1883" 2 "client"
8、效果


浙公网安备 33010602011771号