81 lines
2.4 KiB
C#
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);
|
|
}
|
|
}
|
|
} |