sangoの使い方 -- C#編
これまでppatiernoさんが開発していたMQTTライブラリ
m2mqtt がpahoに寄贈されました。
http://www.eclipse.org/paho/clients/dotnet/
このライブラリは以下の.Netプラットフォームに対応しています。
- .Net Framework (4.5まで)
- .Net Compact Framework 3.5 & 3.9 (for Windows Embedded Compact 7 /
2013) - .Net Micro Framework 4.2 & 4.3
- Mono (for Linux O.S.)
- WinRT platforms (Windows 8.1 and Windows Phone 8.1)
ただし、現時点ではMQTT 3.1.1には対応していません。(sangoは3.1にも対応
しています)
確認していませんが、このライブラリを使えばUnityでもMQTTが使えるかもしれませんね。
- ライブラリのダウンロード
http://www.eclipse.org/paho/clients/dotnet/
からダウンロードできます。
ただし、 codeplexがNuGetで配布しておりますので、NuGetからダウンロード し
たほうが簡単かと思います。(m2mqttで検索)
- クライアントの実装
Connect
{.sourceCode .csharp}
class MQTT
{
private MqttClient client;
public void Connect(string brokerHostname, int brokerPort,
string userName, string password)
{
// SSL使用時はtrue、CAを指定
client = new MqttClient(brokerHostname, brokerPort, false,
null);
// clientidを生成
string clientId = Guid.NewGuid().ToString();
client.Connect(clientId, userName, password);
}
uPLibrary.Networking.M2Mqtt.MqttClientをnewして、Connectします。
MqttClientでは、ホスト名だけを指定するなどのオーバーロードがあります。
Subscribe
{.sourceCode .csharp}
// メッセージ到着時に呼び出されるメソッド
private void onReceive(object sender,
uPLibrary.Networking.M2Mqtt.Messages.MqttMsgPublishEventArgs e)
{
Console.WriteLine(e.Topic);
string msg = Encoding.UTF8.GetString(e.Message);
Console.WriteLine(msg);
}
public void Subscribe(string topic){
// callbackを登録
client.MqttMsgPublishReceived += this.onReceive;
client.Subscribe(new string[] { topic }, new byte[] {
MqttMsgBase.QOS_LEVEL_AT_MOST_ONCE });
}
client.MqttMsgPublishReceived
にメソッドを追加しておき、 Subscribe
します。
Publish
{.sourceCode .csharp}
public void Publish(string topic, string msg)
{
client.Publish(
topic, Encoding.UTF8.GetBytes(msg),
MqttMsgBase.QOS_LEVEL_AT_MOST_ONCE, false); // retainが
false
}
Publish
をするだけです。
参照
M2Mqtt Client