LoginSignup
6
6

More than 5 years have passed since last update.

sangoの使い方 -- C#編

Last updated at Posted at 2014-11-10

sangoの使い方 -- C#編

これまでppatiernoさんが開発していたMQTTライブラリ
m2mqtt がpahoに寄贈されました。

このライブラリは以下の.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が使えるかもしれませんね。

1. ライブラリのダウンロード

からダウンロードできます。

ただし、 codeplexがNuGetで配布しておりますので、NuGetからダウンロード し
たほうが簡単かと思います。(m2mqttで検索)

2. クライアントの実装

Connect

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

// メッセージ到着時に呼び出されるメソッド
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

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

: http://m2mqtt.wordpress.com/m2mqtt_doc/

6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6