M2MQTT ライブラリを使用して MQTT メッセージを Azure IoT Hub に送信しようとしています。ここのIoT Hub MQTT サポートのガイダンスに従って、その記事のネイティブ MQTT セクションにある接続などの適切なパラメーターを考え出しました。
次のコードで正常に接続しています (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);
しかし、発行呼び出しを行うとすぐに (deviceid は私のデバイス 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 クラス コードをステップ ダウンしようとしましたが、接続を閉じたのは Azure IoT Hub エンドのように聞こえるコメントと共に ReceiveThread から切断されています。
// zero bytes read, peer gracefully closed socket
else
{
// wake up thread that will notify connection is closing
this.OnConnectionClosing();
}
閉じている理由やトラブルシューティング方法について誰かがアイデアを持っているなら、私はすべて耳/目です.