.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 分钟前
MybatisPlus-快速入门
java·spring boot·spring cloud·微服务·mybatis·mybatisplus
哈密瓜刨冰8 分钟前
HTTP 协议的基本格式和 fiddler 的用法
java
砖头拍死你28 分钟前
51单片机如何使用printf打印unsigned long的那些事
java·前端·51单片机
用户15129054522037 分钟前
css —pointer-events属性_css pointer-events
前端
帅夫帅夫38 分钟前
Axios 入门指南:从基础用法到实战技巧
前端
云边散步40 分钟前
《校园生活平台从 0 到 1 的搭建》第四篇:微信授权登录前端
前端·javascript·后端
讨厌吃蛋黄酥42 分钟前
React样式冲突终结者:CSS模块化+Vite全链路实战指南🔥
前端·javascript·react.js
架构师沉默43 分钟前
让我们一起用 DDD,构建更美好的软件世界!
java·后端·架构
噔噔42843 分钟前
使用webworker优化大文件生成hash的几种方式
前端
胖头鱼不吃鱼-1 小时前
Go 原理之 GMP 并发调度模型
java·jvm·golang