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);
の、あなたの公開トピック文字列の最初の「/」を削除したい場合があります
同じエラーが表示されます。 – Jackie
mqttクライアントにwindows-iot-sdkを使ってみましたか? – Jackie
こんにちは、Azure IoT SDKチームは、m2mqttについて好きなこと、またはSDKを使用しないようにするSDKでうまくいかないことを聞いてもいいですか? –