Mosquittopaho 和Paho MQTT的一些事情

  MQTT 协议已经非常普及了。我们在程序中使用Mosquittopaho 作为linux 上的MQTT 代理,而客户端使用Paho MQTT库。用起来非常简单,但是有些细节还是值得记录下来。

端口和协议

    Mosquittopaho 开放了个端口(1883和9001),端口 1883 使用基于MQTT 的协议,在TCP上接收直接MQTT包。而9001 使用基于MQTT over websocket协议。在Http/websocket 上接收MQTT 包。websocket 适合于浏览器客户端使用。

开放websocket 端口需要在配置文件(mosquitto.conf)中打开。也可以自己定义一个default.conf. 运行时要指定default.conf 文件

mosquitto -c /etc/mosquitto/conf.d/default.conf

mosquitto.conf 和default.conf 文件的内容

listener 1883
protocol mqtt 
listener 9001
protocol websockets
 

 

使用websocket ,需要在usr/local/lib 中有 libwebsockets.so 共享库,在window wsl 下,发现没有

sudo apt-get update
sudo apt-get install libwebsockets-dev

也遵循网路的内容,打了下面的命令:

ln -s /usr/local/lib/libwebsockets.so.10 /usr/lib/libwebsockets.so.10

结果好了。

 

 

Paho MQTT  客户端

javascript 库

在paho 官网https://projects.eclipse.org/projects/iot.paho/downloads 下载的是paho-mqtt.js和paho-mqtt-min.js 的压缩包。

记住:使用时, paho-mqtt.js 只支持websoket 协议,所以要使用9001 端口。

C 库

    我使用的是 C client source 1.3.0  同样在paho 官网上下载。下载之后,编译成了一个静态库libpahomqtt3.c.a.  在src/sample 下由例子,我使用MQTTClient_publish 和MQTTClient_subscribe 两个例程。使用clang 编译。

 mqtt app文件目录

mqtt_app

   -  pahomqtt

         libpahomqtt3.c.a

         -include

   MQTTClient_publish.c

  MQTTClient_subscribe.c

编译CMD

结果

浏览器端的MQTT 程序可以和C语言的MQTT 程序相互通信。

 

 

 

 

 

 

 

你可能感兴趣的:(linux,iot,C++)