.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);
    }

}
相关推荐
再学一点就睡7 分钟前
Vite 工作原理(简易版)—— 从代码看核心逻辑
前端·vite
六千江山11 分钟前
从字符串中提取符合规则的汽车车牌
java
33255_40857_2805920 分钟前
从韩立结婴看Java进阶:一个10年老码农的修仙式成长指南
java
赵星星52020 分钟前
透彻理解Java中的深拷贝与浅拷贝:从误区到最佳实践
java·后端
心月狐的流火号22 分钟前
Java CompletableFuture 核心API
java
好好好明天会更好23 分钟前
uniapp项目中小程序的生命周期
前端·vue.js
黑客影儿32 分钟前
Java技术总监的成长之路(技术干货分享)
java·jvm·后端·程序人生·spring·tomcat·maven
京东云开发者37 分钟前
EXCEL导入—设计与思考
java·架构
CF14年老兵43 分钟前
「Vue 3 + View Transition 实现炫酷圆形缩放换肤动画」
前端·css·trae
Warren981 小时前
软件测试-Selenium学习笔记
java·javascript·笔记·学习·selenium·测试工具·安全