我正在尝试使用 M2MQTT 库将 MQTT 消息发送到 Azure IoT 中心。我已按照此处的指南IoT Hub MQTT support来为该文章的本机 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 中心。
我尝试通过 M2MQTT MqttClient 类代码降级,并且断开连接来自 ReceiveThread,其注释听起来像是关闭连接的 Azure IoT Hub 端:
// zero bytes read, peer gracefully closed socket
else
{
// wake up thread that will notify connection is closing
this.OnConnectionClosing();
}
如果有人对它关闭的原因或如何进行故障排除有任何想法,我全神贯注。