2016-07-17 13 views
3

M2MQTTライブラリを使用してAzure IoT HubにMQTTメッセージを送信しようとしています。ここでは、IoT Hub MQTT supportというガイダンスに従って、その記事のネイティブMQTTセクションでconnectなどの正しいパラメータを思いついています。M2MQTTパブリッシュ時にAzure IoT Hubから切断する

私は、次のコードを使用して成功した(CONNACK戻り値0)を接続しています:

_publishClient = new MqttClient(_hostName, 8883, true, null, null,MqttSslProtocols.TLSv1_2); 
_publishClient.MqttMsgPublished += _client_MqttMsgPublished; 
_publishClient.ConnectionClosed += _client_ConnectionClosed; 
var connack = _publishClient.Connect(_publishDeviceId, string.Format("{0}/{1}", 
      _hostName, _publishDeviceId), _publishSas,true,3600); 

しかし、すぐに私は公開呼び出しを行うと(デバイスIDは私のデバイスIDがある):

var pubresult = _publishClient.Publish("/devices/{deviceid}/messages/events/", Encoding.UTF8.GetBytes("Hello"), MqttMsgBase.QOS_LEVEL_AT_MOST_ONCE, false); 

M2MQTTは、OnConnectionClosedイベントを切断して発生させ、メッセージはAzure IoT Hubに配信されません。

私はM2MQTT MqttClientクラスのコードを降圧および切断は、接続を閉じアズールのIoTハブ端であるように、それは音作りのコメントでReceiveThreadから来てみました

// zero bytes read, peer gracefully closed socket 
else 
{ 
    // wake up thread that will notify connection is closing 
    this.OnConnectionClosing(); 
} 

の場合誰もがそれが終わっているか、トラブルシューティングをする方法についてのアイデアを持っている、私はすべての耳/目です。

var pubresult = _publishClient.Publish("devices/{deviceid}/messages/events/", Encoding.UTF8.GetBytes("Hello"), MqttMsgBase.QOS_LEVEL_AT_LEAST_ONCE, false); 

を使用してあなたはとても代わり

var pubresult = _publishClient.Publish("/devices/{deviceid}/messages/events/", Encoding.UTF8.GetBytes("Hello"), MqttMsgBase.QOS_LEVEL_AT_LEAST_ONCE, false); 

の、あなたの公開トピック文字列の最初の「/」を削除したい場合があります

+1

同じエラーが表示されます。 – Jackie

+2

mqttクライアントにwindows-iot-sdkを使ってみましたか? – Jackie

+0

こんにちは、Azure IoT SDKチームは、m2mqttについて好きなこと、またはSDKを使用しないようにするSDKでうまくいかないことを聞いてもいいですか? –

答えて

2

これは、このpageに提案し、私に動作します。

関連する問題