【发布时间】:2019-11-20 21:38:12
【问题描述】:
我正在尝试使用 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 与 cmets 听起来像是关闭连接的 Azure IoT Hub 端:
// zero bytes read, peer gracefully closed socket
else
{
// wake up thread that will notify connection is closing
this.OnConnectionClosing();
}
如果有人对它关闭的原因或如何排除故障有任何想法,我会全力以赴。
【问题讨论】:
-
我看到了同样的错误。
-
你试过用 windows-iot-sdk 做 mqtt 客户端吗?
-
嗨,这里的 Azure IoT SDK 团队 - 我想问一下您喜欢 m2mqtt 的哪一点,或者在我们的 SDK 中不起作用,导致您不再使用它?
-
@pierreca-MSFT 试图记住,因为这已经是差不多 2 年前的事了……要么你当时在 SDK 中没有 MQTT 支持,要么可能是客户要求使用那个图书馆,怕是想不起来了。我通常当然会使用你的 SDK。
标签: azure mqtt azure-iot-hub