using System; using System.Collections.Generic; using System.Data; using System.IO; using System.Linq; using System.Net; using System.Security.Cryptography; using System.Text; using System.Web; using Telerik.Web.UI; using NPOI.SS.UserModel; using NPOI.HSSF.UserModel; using NPOI.XSSF.UserModel; using NPOI.SS.Util; using NPOI.HSSF.Util; using HslCommunication.MQTT; using HslCommunication; namespace VRS { public class Mqtt { private string Ip; private string Port; private MqttClient mqttClient; MqReturn re = new MqReturn(); public Mqtt(string ClientId) { Ip = System.Configuration.ConfigurationManager.AppSettings["MQ_IP"]; Port = System.Configuration.ConfigurationManager.AppSettings["MQ_Port"]; string client = HttpContext.Current.Request.Cookies["admin_user_id"].Value.ToString(); mqttClient = new MqttClient(new MqttConnectionOptions() { ClientId = client, IpAddress = Ip, Port = Convert.ToInt32(Port) }); } public void PublishMessage(string Topic, string payLoad) { OperateResult connect = mqttClient.ConnectServer(); if (connect.IsSuccess) { mqttClient.PublishMessage(new MqttApplicationMessage() { Topic = Topic, // 主题 QualityOfServiceLevel = MqttQualityOfServiceLevel.AtMostOnce, // 消息等级 Payload = Encoding.UTF8.GetBytes(payLoad), // 数据 Retain = true, // 是否保留 }); } else { } } public void Received(string Topic) { OperateResult connect = mqttClient.ConnectServer(); if (connect.IsSuccess) { mqttClient.OnMqttMessageReceived += MessageReceived; // 调用一次即可 var mm = mqttClient.SubscribeMessage(Topic); } else { } } private void MessageReceived(MqttClient client, string topic, byte[] payload) { re.Topic = topic; re.Payload = Encoding.UTF8.GetString(payload); } } }