添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

客户端基

/// <summary>
///
/// </summary>
public class BaseClient : IDisposable
{
protected string client;
protected int port;
protected string username;
protected string password;
protected IMqttClient mqttClient;

protected bool needPassword = false;

public BaseClient(string client, int port = 1883)
{
this.client = client;
this.port = port;
}

public BaseClient(string client, int port = 1883, string username = "admin", string password = "public")
{
this.client = client;
this.port = port;
this.username = username;
this.password = password;
needPassword = true;
}

public BaseClient Connect()
{
MqttFactory mqttFactory = new MqttFactory();

mqttClient = mqttFactory.CreateMqttClient();
MqttClientOptions mqttClientOptions = new MqttClientOptionsBuilder()
.WithTcpServer(client, port)
.Build();

if (needPassword)
{
mqttClientOptions.Credentials = new MqttClientCredentials(username, Encoding.Default.GetBytes(password));
}

mqttClient.ConnectAsync(mqttClientOptions, CancellationToken.None).Wait();
return this;
}

public void DisConnect()
{
mqttClient.DisconnectAsync().Wait();
}
public void Dispose()
{
if (mqttClient == null)
{
return;
}

if (mqttClient.IsConnected)
{
mqttClient.DisconnectAsync().Wait();
}
mqttClient.Dispose();
}
}

消费者

public class MQTTClientSubscribe : BaseClient, IDisposable
{
MqttFactory mqttFactory = new MqttFactory();

public MQTTClientSubscribe(string client, int port = 1883, string username = "admin", string password = "public") : base(client, port, username, password)
{
}


public MQTTClientSubscribe(string server, int port = 1883) : base(server, port)
{

}

public void InvokeReceived(Action action)
{
mqttClient.ApplicationMessageReceivedAsync += e =>
{
System.Console.WriteLine("Received application message:" + e.ApplicationMessage.ConvertPayloadToString());
e.DumpToConsole();

e.ApplicationMessage.ConvertPayloadToString();

action?.Invoke();

return Task.CompletedTask;
};
}

public void SubscribeTopic(string topic)
{
MqttClientSubscribeOptions mqttSubscribeOptions = mqttFactory.CreateSubscribeOptionsBuilder()
.WithTopicFilter(f => { f.WithTopic(topic); })
.Build();


mqttClient.SubscribeAsync(mqttSubscribeOptions, CancellationToken.None).Wait();
}
}

生产者

public class MQTTClientPublish : BaseClient, IDisposable
{

public MQTTClientPublish(string client, int port = 1883) : base(client, port)
{

}

public MQTTClientPublish(string client, int port = 1883, string username = "admin", string password = "public") : base(client, port, username, password)
{
}

/// <summary>
/// 发送数据
/// </summary>
/// <param name="topic"></param>
/// <param name="data"></param>
/// <returns></returns>
public void PublishMessage(string topic, string data)
{
MqttApplicationMessage applicationMessage = new MqttApplicationMessageBuilder()
.WithTopic(topic)
.WithPayload(data)
.Build();

mqttClient.PublishAsync(applicationMessage, CancellationToken.None).Wait();
}
}

留待后查,同时方便他人

java的导入导出 java导入导出框架

Poi实战教程1. POI框架介绍 2. java程序实现Excel导入导出POI框架介绍 : Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。结构 : HSSF - 提供读写Microsoft Excel XLS 格式档案的功能.XSSF - 提供读写Microsoft Excel OOXM

redis map 搜索 value redis search

1,资料github: https://github.com/RedisJSON/RedisJSON website: https://oss.redis.com/redisjson/ 社区:https://university.redis.com/#courses2,介绍RedisJSON是什么 RedisJSON是一个Redis模块,它实现了JSON数据交换标准ECMA-404,作为原生数据类