C# クライアント
準備
dotnet-sdkのインストール
brew install dotnet-sdkプロジェクトディレクトリの作成
mkdir csharp-mqtt && cd csharp-mqttコンソールプロジェクトの作成
dotnet new console --framework net7.0MQTTnetパッケージの追加
dotnet add package MQTTnet --version 4.3.3.952接続(TLSなし)
MQTTの平文ソケットでmachbase-neoに接続します。
var mqttFactory = new MqttFactory();
var mqttClient = mqttFactory.CreateMqttClient();
var connectOptions = new MqttClientOptionsBuilder().WithTcpServer("127.0.0.1", 5653).Build();
var connAck = await mqttClient.ConnectAsync(connectOptions, CancellationToken.None);
connAck.DumpToConsole();切断
var mqttClientDisconnectOptions = mqttFactory.CreateClientDisconnectOptionsBuilder().Build();
await mqttClient.DisconnectAsync(mqttClientDisconnectOptions, CancellationToken.None);メッセージの発行
var msg = new MqttApplicationMessageBuilder()
.WithTopic("db/append/example")
.WithPayload(@"[
[""temperature"",1677033057000000000,21.1],
[""humidity"",1677033057000000000,0.53]
]")
.Build();
await mqttClient.PublishAsync(msg, CancellationToken.None);ソースコード全体
using MQTTnet;
using MQTTnet.Client;
using System.Text.Json;
namespace MqttTest
{
internal class Program
{
private static async Task Main()
{
var mqttFactory = new MqttFactory();
var mqttClient = mqttFactory.CreateMqttClient();
var connectOptions = new MqttClientOptionsBuilder().WithTcpServer("127.0.0.1", 5653).Build();
var connAck = await mqttClient.ConnectAsync(connectOptions, CancellationToken.None);
connAck.DumpToConsole();
var msg = new MqttApplicationMessageBuilder()
.WithTopic("db/append/example")
.WithPayload(@"[
[""temperature"",1677033057000000000,21.1],
[""humidity"",1677033057000000000,0.53]
]")
.Build();
await mqttClient.PublishAsync(msg, CancellationToken.None);
var mqttClientDisconnectOptions = mqttFactory.CreateClientDisconnectOptionsBuilder().Build();
await mqttClient.DisconnectAsync(mqttClientDisconnectOptions, CancellationToken.None);
}
}
}
internal static class ObjectExtensions
{
public static TObject DumpToConsole<TObject>(this TObject @object)
{
var output = "NULL";
if (@object != null)
{
output = JsonSerializer.Serialize(@object, new JsonSerializerOptions
{
WriteIndented = true
});
}
Console.WriteLine($"[{@object?.GetType().Name}]:\r\n{output}");
return @object;
}
}最終更新日