dlmh_system/VRS/Util/Mqtt.cs

81 lines
2.4 KiB
C#

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