Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
M2MQTT在发布时断开与Azure IoT集线器的连接_Azure_Mqtt_Azure Iot Hub - Fatal编程技术网

M2MQTT在发布时断开与Azure IoT集线器的连接

M2MQTT在发布时断开与Azure IoT集线器的连接,azure,mqtt,azure-iot-hub,Azure,Mqtt,Azure Iot Hub,我正在尝试使用M2MQTT库将MQTT消息发送到Azure IoT集线器。我按照这里的指导,在那篇文章的本机MQTT部分中为connect等提供了正确的参数 我正在使用以下代码成功连接(CONNACK返回值0): _publishClient = new MqttClient(_hostName, 8883, true, null, null,MqttSslProtocols.TLSv1_2); _publishClient.MqttMsgPublished += _client_MqttMsg

我正在尝试使用M2MQTT库将MQTT消息发送到Azure IoT集线器。我按照这里的指导,在那篇文章的本机MQTT部分中为connect等提供了正确的参数

我正在使用以下代码成功连接(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):

M2MQTT断开并引发OnConnectionClosed事件,消息永远不会传递到Azure IoT集线器

我已尝试通过M2MQTT MqttClient类代码退出,断开连接来自ReceiveThread,带有注释,听起来好像是Azure IoT Hub end关闭了连接:

// 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);
使用


这是对我的建议,对我有效。

我使用的不是m2mqtt库,而是Paho C库,我也有同样的问题。 直到我在用户名中指定了最新的API版本,才成功地将消息发布到物联网中心

在我的例子中,用户名是:
//api version=2016-11-14

我在这里偶然发现了这个问题及其解决方法:


在Microsoft文档中找不到有关此问题的任何信息

我发现了相同的错误。您是否尝试过将windows iot sdk用于mqtt客户端?您好,Azure IoT SDK团队在这里-我可以问一下,您喜欢m2mqtt的哪些方面,或者在我们的SDK中不起作用的哪些方面会引导您远离使用它?@pierreca MSFT试图回忆起这一切,因为这几乎是两年前的事了。。。要么当时SDK中没有MQTT支持,要么可能是客户要求使用该库,恐怕我想不起来了。我通常当然会使用你的SDK。
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);