mqttclient 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
mqttclient 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票

软件简介

一个高性能、高稳定性的跨平台 MQTT 客户端,基于 socket API 开发,可以在嵌入式设备(FreeRTOS/LiteOS/RT-Thread/TencentOS tiny)、Linux、Windows、Mac 上使用,拥有非常简洁的 API 接口,以极少的资源实现 QOS2 的服务质量,并且无缝衔接了 mbedtls 加密库。

优势:

  • 基于标准BSD socket之上开发,只要是兼容BSD socket的系统均可使用。

  • 稳定:无论是掉线重连丢包重发,都是严格遵循MQTT协议标准执行,除此之外对大数据量的测试无论是收是发,都是非常稳定(一次发送135K数据,3秒一次),高频测试也是非常稳定(7个主题同时收发,每秒一次,也就是1秒14个mqtt报文,服务质量QoS0、QoS1、QoS2都有)。因为作者以极少的资源设计了记录机制,对采用QoS1服务质量的报文必须保证到达一次,当发布的主题(qos1、qos2都适用)没有被服务器收到时会自动重发,而对QoS2服务质量的报文保证有且只有处理一次(如果不相信它稳定性的同学可以自己去修改源码,专门为QoS2服务质量去做测试,故意不回复PUBREC包,让服务器重发QoS2报文,且看看客户端是否有且只有处理一次),而对于掉线重连的稳定性,这种则是基本操作了,没啥好说的,在自动重连后还会自动重新订阅主题,保证主题不会丢失,因此在测试中稳定性极好。

  • 轻量级:整个代码工程极其简单,不使用mbedtls情况下,占用资源极少,作者曾使用esp8266模组与云端通信,整个工程代码消耗的RAM不足15k(包括系统占用的开销,对数据的处理开销,而此次还是未优化的情况下,还依旧完美保留了掉线重连的稳定性,但是对应qos1、qos2服务质量的报文则未做测试,因为STM32F103C8T6芯片资源实在是太少了,折腾不起)。

  • 无缝衔接mbedtls加密传输,让网络传输更加安全,而且接口层完全不需要用户理会,无论是否加密,mqttclient对用户提供的API接口是没有变化的,这就很好的兼容了一套代应用层的码可以加密传输也可以不加密传输。

  • 拥有极简的API接口,总的来说,mqttclient的配置都有默认值,基本无需配置都能使用的,也可以随意配置,对配置都有健壮性检测,这样子设计的API接口也是非常简单。

  • 有非常好的代码风格与思想:整个代码采用分层式设计,代码实现采用异步处理的思想,降低耦合,提高性能,具体体现在什么地方呢?很简单,目前市面上很多MQTT客户端发布主题都是要阻塞等待ack,这是非常暴力的行为,阻塞当前线程等待服务器的应答,那如果我想要发送数据怎么办,或者我要重复检测数据怎么办,你可能会说,指定阻塞时间等待,那如果网络延迟,ack迟迟不来,我就白等了吗,对于qos1、qos2的服务质量怎么办,所以说这种还是要异步处理的思想,我发布主题,那我发布出去就好了,不需要等待,对于qos1、qos2服务质量的MQTT报文,如果服务器没收到,那我重发就可以,这种重发也是异步的处理,完全不会阻塞当前线程。

  • MQTT协议支持主题通配符“#”、“+”

  • 订阅的主题与消息处理完全分离,让编程逻辑更加简单易用,用户无需理会错综复杂的逻辑关系。

  • mqttclient内部已实现保活处理机制,无需用户过多关心理会,用户只需专心处理应用功能即可。

  • 无缝衔接salof:它是一个同步异步日志输出框架,在空闲时候输出对应的日志信息,也可以将信息写入flash中保存,方便调试。

  • 不对外产生依赖。

  • 使用 paho mqtt 库

整体框架

拥有非常明确的分层框架。

整体框架

目前已实现了Linux、TencentOS tiny、FreeRTOS、RT-Thread平台(已做成软件包,名字为kawaii-mqtt),除此之外TencentOS tiny的AT框架亦可以使用(RAM消耗不足15K),并且稳定性极好!

平台 代码位置
Linux https://github.com/jiejieTop/mqttclient
TencentOS tiny https://github.com/Tencent/TencentOS-tiny/tree/master/board/Fire_STM32F429
TencentOS tiny AT 框架 https://github.com/jiejieTop/gokit3-board-mqttclient
RT-Thread https://github.com/jiejieTop/kawaii-mqtt
FreeRTOS https://github.com/jiejieTop/freertos-mqttclient
展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (0)

加载中
更多评论
暂无内容
发表了博客
2018/01/10 21:37

MQTTClient的使用

###MQTTClient的使用 iOS环境下开发 MQTT 客户端程序,一般依赖稳定的第三方 FrameWork,由于涉及网络数据传输,建议选择 Object-c 原生的框架,比如 MQTT-Client-Framework。 现在一般常用的有两个MQTT 1) MQTTKit 2) MQTTClient 不过MQTTKit貌似很长时间不维护了, 使用较多的是MQTTClient。 * 集成MQTTClient [MQTT-...

0
0
发表了博客
2018/01/15 14:02

MQTTClient的使用(二)

MQTT-Client-FrameWork 包提供的客户端类有 MQTTSession 和 MQTTSessionManager,后者维持静态资源,而且已经封装好自动重连等逻辑。初始化时只需要传入相关的网络参数。 下面是 MQTTSessionManager的使用详解 1.建立连接 ``` NSString *clientId = [UIDevice currentDevice].identifierForVendor.UUIDString; MQTTSess...

0
0
发表了博客
11/17 08:35

paho实现MQTTClient发布消息

paho实现MQTTClient发布消息 接下来会用paho开源的一个项目,实现mqtt客户端发布消息,此文主要参考MQTT Client library for C,Paho给出的创建一个客户端有如下类似的步骤: 1、安装 //从github上下载项目 git clone https://github.com/eclipse/paho.mqtt.c.git //进入文件夹 cd paho.mqtt.c //编译 make //安装 sudo...

0
0
发表了博客
2019/02/21 00:13

使用Surging Mqtt 开发基于WS的MqttClient客户端

原文:使用Surging Mqtt 开发基于WS的MqttClient客户端 最近一段时间由于要做一套智能设备系统,而有幸了解到Surging中的Mqtt broker,学习了很多东西本篇文章基于Surging开源的.netcore项目有兴趣的朋友可点击此处进行了解。话不多说我们来基于Surging 中的WS与MqttClient结合来开发服务端MqttClient的使用。 准备工作 ...

0
0
发表了博客
2018/03/11 00:43

【Qt官方MQTT库的使用,附一个MqttClient例子】

Qt官方MQTT库的使用,附一个MqttClient例子 修改説明: 修改時間:2019年5月31日 修改内容:mqtt庫編譯的説明 ----------------------------------------------------------- 开发环境:win7 64 + Qt5.9 记录时间:2018年3月11日 00:48:42 联系邮箱: yexiaopeng1992@126.com(有问题发我邮件) 一:前言   最近在调试M...

0
0
发表了博客
2019/05/31 13:53

Paho -物联网 MQTT C Cient的实现和详解

https://www.cnblogs.com/homejim/p/8196763.html 概述   在文章Paho - MQTT C Cient的实现中,我介绍了如何使用Paho开源项目创建MQTTClient_pulish客户端。但只是简单的介绍了使用方法,而且客户端的结果与之前介绍的并不吻合,今天我就结合新的例子,给大家讲解一下Paho使用MQTT客户端的主要过程。   如同前面介绍...

0
0
发表于开发技能专区
2018/05/11 15:32

vs2017通过mqttnet创建mqtt服务端 客户端

服务端: using MQTTnet; using MQTTnet.Server; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.IO; using System.Linq; using System.Net; using System.ServiceProcess; using System.Text; using System.Threading.Task...

1
1
发表于硬件 & IoT专区
2019/11/25 13:57

常用 MQTT 客户端库简介

前言 MQTT 是一个轻量的发布订阅模式消息传输协议,专门针对低带宽和不稳定网络环境的物联网应用设计。MQTT 基于发布/订阅范式,工作在 TCP/IP协议族上,MQTT 协议轻量、简单、开放并易于实现,这些特点使它适用范...

0
0
发表了博客
2019/03/12 14:40

mqttnet 简记

1.mqttnet开源库,https://github.com/chkr1011/MQTTnet 2.服务器端和客户端 服务器端和客户端两个,他们需要保持长连接,主要是通过订阅和发布来进行消息的传递交换。 MQTT 服务端主要用于与多个客户端保持连接,并处理客户端的发布和订阅等逻辑。一般很少直接从服务端发送消息给客户端(可以使用 mqttServer.Publish(a...

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
暂无内容
0 评论
9 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部