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

}
相关推荐
2601_9623413012 分钟前
计算机毕业设计之jsp考研在线复习平台
java·大数据·开发语言·hadoop·python·考研·课程设计
huangjiazhi_20 分钟前
纯C++实现ini文件操作
java·后端·spring
用户22046039586827 分钟前
ES模块和commonJS两种标准下中实现__dirname?一篇文章教你理清楚
前端
zhixingheyi_tian37 分钟前
JVM 之 GCLocker
java·jvm
码哥字节1 小时前
把 Cursor 的烂输出变成好代码,这 10 个 Prompt 改造让我省了 80% 改稿时间
java·ai编程工具·cursor 配置·prompt 技巧
2503_931712481 小时前
10m/s超高速电梯:西奥XO-NEWIII如何树立行业速度标杆
java·大数据·数据库
犹豫的大炮1 小时前
jQuery最核心的基础设施之一——数据缓存模块进化史
前端·缓存·jquery
小碗细面1 小时前
从 PRD 到上线:SpecKit 如何让 AI 真正参与前端交付
前端·ai编程·claude
折哥的程序人生 · 物流技术专研1 小时前
第4篇:抽象工厂模式——产品族一键创建
java·设计模式·抽象工厂模式·创建型模式·编程进阶·产品族·扩充系列