收集的mqtt客户端开发库
介绍
mqtt协议非常成熟稳定,且包体非常小,同时mqtt的客户端开发库基本囊括了所有语言所有平台,不在为客户端通信协议开发烦恼
mqant支持的mqtt版本
目前mqant只支持mqtt v3 版本也就是 MQTT 3.1 v3版本是MQTT 3.1.1 因此在使用库的时候要注意选择
为什么尽量不要自己设计通信协议
- 巨大的工作量,需要开发服务端库和多种语言多种平台的客户端库
- 非常容易出错,二进制的粘包处理稍微不注意就会出现错误,而且部分开发语言二进制处理也非常繁琐(JavaScript,python)
- 通信协议定义不规范可能引起后续开发后续问题,例如心跳处理,粘包处理等等。
mqtt客户端连接不上mqant
如果你在测试过程中发现mqtt客户端连接mqant失败,那极有可能是你的mqtt客户端设置的mqtt协议版本不一致造成的
mqtt协议有多个版本,常用的两个版本为 3.1 和 3.1.1 也称为 3和4 mqant目前只支持3.1版本的协议,所有连接的mqtt客户端要把版本调整为3.1协议
unity 3d 支持mqtt客户端库
c# https://github.com/ericvoid/StriderMqtt
StriderMqtt 是一个纯C#的mqtt库,支持mqtt 3.1 and 3.1.1 versions; 目前mqant只支持mqtt3.1版本
示例
var connArgs = new MqttConnectionArgs()
{
ProtocolVersion = MqttProtocolVersion.V3_1, //设置为V3_1
ClientId = this.ClientId,
Hostname = "127.0.0.1",
Port = 3563,
Secure = false, //后端是否要求 tls加密
CleanSession = false //设置为false
};
using (var conn = new MqttConnection(connArgs, persistence))
{
conn.Connect();
Console.WriteLine("{0} connected", ClientId);
try
{
BindEvents(conn);
while (conn.Loop(PollLimit)&& this.published <10)
{
conn.Publish("HD_Login",
Encoding.UTF8.GetBytes("Hello world!"));
}
}
finally
{
UnbindEvents(conn);
}
}