mqttnet 详解_mqttnet 简记

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

大家好,又见面了,我是你们的朋友全栈君。

1.mqttnet开源库,https://github.com/chkr1011/MQTTnet

2.服务器端和客户端

服务器端和客户端两个,他们需要保持长连接,主要是通过订阅和发布来进行消息的传递交换。

MQTT 服务端主要用于与多个客户端保持连接,并处理客户端的发布和订阅等逻辑。一般很少直接从服务端发送消息给客户端(可以使用 mqttServer.Publish(appMsg); 直接发送消息),多数情况下服务端都是转发主题匹配的客户端消息,在系统中起到一个中介的作用。

而客户端主要是通过向服务端订阅它感兴趣(主题)的消息,另一些客户端向服务端发布(主题)消息,服务端将订阅和发布的主题进行匹配,并将消息转发给匹配通过的客户端。

3连接,通信

(1)服务器端启动服务:

public static IMqttServer mqttServer = null;

// 配置一个mqtt服务.

var optionsBuilder = new MqttServerOptionsBuilder()

//连接记录数,默认 一般为2000

.WithConnectionBacklog(2000)

//服务器连接端口

.WithDefaultEndpointPort(port)

//连接验证器

.WithConnectionValidator(ValidatingMqttClients())

//持续会话

.WithPersistentSessions()

;

// 建立一个MQTT服务.

mqttServer = new MqttFactory().CreateMqttServer();

mqttServer.ApplicationMessageReceived += MqttServer_ApplicationMessageReceived;

mqttServer.ClientSubscribedTopic += MqttServer_ClientSubscribedTopic;

mqttServer.ClientUnsubscribedTopic += MqttServer_ClientUnsubscribedTopic;

mqttServer.ClientConnected += MqttServer_ClientConnected;

mqttServer.ClientDisconnected += MqttServer_ClientDisconnected;

//启动mqtt服务

await Task.Run(async () => { await mqttServer.StartAsync(optionsBuilder.Build()); });

(2)客户端

与服务器端连接

连接语句:

private IMqttClient mqttClient = null;

//实例化 创建客户端对象

var Factory = new MqttFactory();

mqttClient = Factory.CreateMqttClient();

mqttClient.ApplicationMessageReceived += MqttClient_ApplicationMessageReceived;

mqttClient.Connected += MqttClient_Connected;

mqttClient.Disconnected += MqttClient_Disconnected;

//调用异步方法连接到服务端

await mqttClient.ConnectAsync(option());

option的信息设置:

public IMqttClientOptions option()

{

//连接到服务器前,获取所需要的MqttClientTcpOptions 对象的信息

var options = new MqttClientOptionsBuilder()

.WithClientId(ClientId)                    // clientid是设备id

.WithTcpServer(IP, Port)              //onenet ip:183.230.40.39    port:6002

.WithCredentials(UserName,pwd)      //username为产品id       密码为鉴权信息或者APIkey

//.WithTls()//服务器端没有启用加密协议,这里用tls的会提示协议异常

.WithCleanSession(false)

.WithKeepAlivePeriod(TimeSpan.FromSeconds(2000))

.Build();

return options;

}

连接上以后订阅主题:

mqttnet 详解_mqttnet 简记

发布主题:

mqttnet 详解_mqttnet 简记

4.

服务端支持 ClientConnected、ClientDisconnected 和 ApplicationMessageReceived 事件,分别用来检查客户端连接、客户端断开以及接收客户端发来的消息。

客户端支持 Connected、Disconnected 和 ApplicationMessageReceived 事件,用来处理客户端与服务端连接、客户端从服务端断开以及客户端收到消息的事情。

5.

通过 mqtt接入onenet,其实也就是把onenet 平台当做mqtt broker,连接上稍作改变就可以了。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/152849.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • pywin32、win32api、win32gui、win32com、win32con 都是啥?「建议收藏」

    pywin32、win32api、win32gui、win32com、win32con 都是啥?「建议收藏」pywin32、win32api、win32gui、win32com、win32con名称非常类似,特别容易混淆,今天就用600字给大家区分一下文章目录pywin32win32guiwin32conwin32apiwin32com记录时间pywin32pywin32主要的作用是供Python开发者快速调用WindowsAPI的一个模块库。该模块的另一个作用是是通过Python进行COM编程。落地场景:如果你想在Windows操作系统用Python实现自动化工作,pywin32模块经常用到

    2022年10月11日
    0
  • 美化包软件_彩色音量进度条插件下载

    美化包软件_彩色音量进度条插件下载前言在我们进行自动化测试的时候,用例往往是成百上千,执行的时间是几十分钟或者是小时级别。有时,我们在调试那么多用例的时候,不知道执行到什么程度了,而pytest-sugar插件能很好解决我们的痛点。

    2022年7月28日
    1
  • 有没有提醒喝水的打卡软件_小爱同学定时打卡

    有没有提醒喝水的打卡软件_小爱同学定时打卡本文方案来自CSDN博主「机灵鹤」方案详情可查看原文:https://smartcrane.blog.csdn.net/article/details/121837850本项目实现了一个久坐提醒和喝水提醒的小助手,在检测到连续工作较长时间之后,会打印纸条,提醒我们起身活动一下;在设定的喝水时间到了以后,也会打印纸条,提醒我们去喝水。项目用到的硬件设备有:硬件都备的差不多了,在开发时我遇到了一个比较棘手的问题,就是咕咕机跟人体传感器它也不是同一家的设备啊!虽然两家都有各自的控制APP,但是它们毕竟是两套系

    2022年10月1日
    0
  • 用python生成一个导出数据库的bat脚本文件

    推荐:http://www.cnblogs.com/roucheng/p/pythonyunsuan.html

    2021年12月25日
    44
  • Java抓取网页数据(原网页+Javascript返回数据)

    Java抓取网页数据(原网页+Javascript返回数据)

    2021年12月6日
    40
  • 特立独行的理解_幸福在一起第14集

    特立独行的理解_幸福在一起第14集原题链接对一个十进制数的各位数字做一次平方和,称作一次迭代。如果一个十进制数能通过若干次迭代得到 1,就称该数为幸福数。1 是一个幸福数。此外,例如 19 经过 1 次迭代得到 82,2 次迭代后得到 68,3 次迭代后得到 100,最后得到 1。则 19 就是幸福数。显然,在一个幸福数迭代到 1 的过程中经过的数字都是幸福数,它们的幸福是依附于初始数字的。例如 82、68、100 的幸福是依附于 19 的。而一个特立独行的幸福数,是在一个有限的区间内不依附于任何其它数字的;其独立性就是依附于它的的幸福数

    2022年8月8日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号