2016-07-17 2 views
3

MQTT 메시지를 Azure IoT 허브에 보내려는 경우 M2MQTT 라이브러리를 사용하려고합니다. 나는이 글의 IoT Hub MQTT support에 대한 지침을 따라 연결에 대한 올바른 매개 변수를 제시하고 그 기사의 원시 MQTT 섹션을 계속한다.M2MQTT 게시시 Azure IoT 허브 연결 해제

나는 다음과 같은 코드로 성공적으로 (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 클래스 코드를 통해 스텝 다운 시도하고 단절은 연결 폐쇄 푸른 만약 IoT 허브의 끝처럼 소리 만들기 코멘트와 함께 ReceiveThread에서 오는 :

// zero bytes read, peer gracefully closed socket 
else 
{ 
    // wake up thread that will notify connection is closing 
    this.OnConnectionClosing(); 
} 

하는 경우를 누구나 왜 닫히는 지 또는 문제를 해결하는 방법에 대한 아이디어가 있습니다. 나는 모든 귀/눈입니다.

+1

동일한 오류가 표시됩니다. – Jackie

+2

mqtt 클라이언트에 windows-iot-sdk를 사용해 보셨습니까? – Jackie

+0

안녕하세요, Azure IoT SDK 팀 - 여기 m2mqtt에 대해 좋아하시는 제품인지 또는 SDK를 사용하지 못하게하는 SDK에서 작동하지 않는 제품인지 묻습니다. –

답변

2

당신은 당신의 게시 주제 문자열에 '/'첫 번째를 제거하려면, 그래서 대신

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); 

이이 page에 제안, 나에 작동합니다 사용 할 수도 있습니다.

관련 문제