置顶 mqtt客户端开发库收集,不再为客户端通信协议开发烦恼
发布于 1 年前 作者 liangdas 1682 次浏览 最后一次编辑是 4 个月前 来自 分享

介绍

mqtt协议非常成熟稳定,且包体非常小,同时mqtt的客户端开发库基本囊括了所有语言所有平台,不在为客户端通信协议开发烦恼

mqant支持的mqtt版本

目前mqant只支持mqtt v3 版本也就是 MQTT 3.1 v3版本是MQTT 3.1.1 因此在使用库的时候要注意选择

为什么尽量不要自己设计通信协议

  1. 巨大的工作量,需要开发服务端库和多种语言多种平台的客户端库
  2. 非常容易出错,二进制的粘包处理稍微不注意就会出现错误,而且部分开发语言二进制处理也非常繁琐(JavaScript,python)
  3. 通信协议定义不规范可能引起后续开发后续问题,例如心跳处理,粘包处理等等。

mqtt客户端开发库收集(非常全)

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);
			}
		}
1 回复
回到顶部