.net 使用MQTT订阅消息

在nuGet下载M2Mqtt V4.3.0版本。(支持.net framework)

订阅主题

复制代码
public void LoadMQQCData()
{
    string enpoint = "xxx.xxx.x.x";//ip地址
    int port = 1883;//端口
    string user = "usrname";//用户名
    string pwd = "pwd";//密码
    string clientid = Guid.NewGuid().ToString(); // 获取一个独一无二的id
    string[] topic = new string[] { "topic" };//订阅主题

    byte[] qosLevels = new byte[] { MqttMsgBase.QOS_LEVEL_AT_LEAST_ONCE }; // qos=1

    MqttClient client = new MqttClient(enpoint, port, false, null, null, MqttSslProtocols.None);
    //消息接受
    client.MqttMsgPublishReceived += new MqttClient.MqttMsgPublishEventHandler(messageReceive);
    //连接Broker
    client.Connect(clientid, user, pwd);
    client.Subscribe(topic, qosLevels);

}

接收数据

复制代码
static void messageReceive(object sender, MqttMsgPublishEventArgs e)
{
    Thread.Sleep(1000 * 30);//等待半分钟 等待质控数据入库
    //接收到的数据
    byte[] Bytes = e.Message;
    //获取站点编号
    try
    {
        string sstation = e.Topic.Substring(e.Topic.IndexOf("qc") - 10, 9);
        if (!string.IsNullOrEmpty(sstation) && sstation.Length == 9)
        { //代表该(SS4201089)站点做了质控
            do some things;
        }
    }
    catch (Exception ex)
    {
        MessageServcie.Instance.OnShowMessageDelegate.Invoke("出错:" + ex.Message.ToString(), false);
    }

}
相关推荐
赛博切图仔2 分钟前
深入理解 package.json:前端项目的 “身份证“
前端·javascript
UIUV6 分钟前
JavaScript 学习笔记:深入理解 map() 方法与面向对象特性
前端·javascript·代码规范
Spirit_NKlaus10 分钟前
Springboot自定义配置解密处理器
java·spring boot·后端
太平洋月光15 分钟前
MJML邮件如何随宽度变化动态切换有几列📮
前端·css
AAA不会前端开发17 分钟前
TypeScript核心类型系统完全指南
前端·typescript
徐同保21 分钟前
使用GitKraken把feature_xtb_1104分支的多次提交记录合并到一起,只保留一次提交记录,并合并到master分支
前端
龙猫蓝图24 分钟前
IDEA新UI设置
java
小光学长29 分钟前
基于Vue的智慧楼宇报修平台设计与实现066z15wb(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
前端·数据库·vue.js
醉方休37 分钟前
web前端 DSL转换技术
前端
sen_shan37 分钟前
Vue3+Vite+TypeScript+Element Plus开发-27.表格页码自定义
前端·javascript·typescript