使用 libmosquitto 遇到的几个问题

1. 使用 libmosquitto 时必须要调用 mosquitto_loop_forever() 或者 mosquitto_loop();
2. mosquitto_loop_forever(); mosquitto_loop() 的第三个参数 max_packets 目前并没有使用,
    但是为了保持兼容性,必须设置为 1.
3. mosquitto_loop_start() 并不是在 thread 中调用,而是会启动一个 thread 处理 network  traffic,
    称为 network thread; 同样的 mosquitto_loop_stop() 不是一定要在 thread 中调用,
    而是结束之前通过 mosquitto_loop_start() 创建的 network thread,
    mosquitto_loop_stop() 会等待 network thread 结束,而为了让 network thread 结束,
    又必须提前调用 mosquitto_disconnect(),
    不过可以通过设置 mosquitto_loop_stop() 的第二参数来强制 network thread 结束;

4.  注册 will message 同时指定 will topic。mosquitto_will_set() 的第二个参数就是指定 will topic 的。
     这就是 mqtt 里所说的 will message 有相应的 topic,  mosquitto_sub, mosquitto_pub 都有参数,
     可以指定 will topic: --will-topic;
5. 如果不使用 mosquitto_loop() 或者 mosquitto_loop_forever() 可以使用:
    (a) mosquitto_socket() 获取 connect socket handle;
    (b) 使用 select() 查询 socket handle 可读/可写;
    (c) 如果 select() 返回可读,mosquitto_read() 用来读取 message;
    (d) 如果返回可写,mosquitto_write() 用来发送 message;
    (e) 如果超时 mosquitto_loop_misc() 用来执行一些杂项;
6. libmosquitto 中 mosquitto_user_data_set() 可以设置 userdata,
    也可以在 mosquitto_new() 初始化时指定 userdata;
    但是并没有接口获得 userdata; 毕竟 uesrdata 是外部数据,user 自己维护 userdata,
    当然应该知道指定给 mosquitto object 的 userdata 是哪一个。
7.保证 libmosquitto 和/或 mosquitto 版本一致。
   mosquitto-1.3.x 与 mosquitto-1.4 有兼容性问题
   客户端使用中级 CA 签发的证书与 broker 建立 ssl 连接时,会有 tlsv1 alert unknown ca error.

 

weinxin
我的微信
一个码农、工程狮、集能量和智慧于一身的、DIY高手、小伙伴er很多的、80后奶爸。
Igor
  • 版权声明: 发表于 2020-08-1518:32:43
  • 转载注明:http://blog.tsingmac.com/prolions/creators/openwrt/3988/
MQTT 与 RocketMQ 的应用场景对比 大数据&BI

MQTT 与 RocketMQ 的应用场景对比

本文介绍微消息队列 MQTT 版和传统消息中间件的关联和区别,并针对实际应用场景下的产品选型给出建议。 背景信息 传统的消息中间件,例如消息队列 RocketMQ 版、消息队列 Kafka 版等都是面...
Openwrt:web中文语言支持,并设置默认中文 Openwrt

Openwrt:web中文语言支持,并设置默认中文

一、概述 openwrt 源码最开始是只支持英文的,所以需要自己配置添加中文显示,有两种方式可以实现web 中文界面显示: ① 直接编译进固件,并设置默认中文; ② 在串口终端在线更新中文包,并在we...
高性价比AC2600路由D-Link DIR-882 Openwrt

高性价比AC2600路由D-Link DIR-882

近年来,面对可连网终端设备的不断暴增以及国内宽带的提速升级,无线路由器迎来了新的更新换代潮。然而对于一般消费者来说,似乎还无法从产品外观上直接感受到路由器产品的迭代与演进。而《拆机实验室》是一档带您深...
D-Link DIR878拆机,AC1900无线路由器 Openwrt

D-Link DIR878拆机,AC1900无线路由器

之前拆过一台D-Link的DIR882之后,有朋友在公众号留言说,有一台DIR878跟它硬件一样的,除了USB口,而且第三方固件通刷。最近DIR882都不在300内了,而看见了DIR878降到299,...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: