MQTT-Client-Framework icon indicating copy to clipboard operation
MQTT-Client-Framework copied to clipboard

unable to connect to ActimeMQ server hosted in AMazon AWS

Open ankitsamal opened this issue 6 years ago • 2 comments

I am trying to connect to an Active MQ server. It needs credentials to access it. The details are below: url: mqtt+ssl://b****************.us-east-1.amazonaws.com:8883

host: b****************.us-east-1.amazonaws.com port:8883

I am getting Encoder not ready when I try to publish a message. This is the code snippet.

MQTTSession session = [[MQTTSession alloc] init]; MQTTWebsocketTransport transport = [[MQTTWebsocketTransport alloc] init]; transport.host = @"b****************mq.us-east-1.amazonaws.com"; transport.port = 8883; transport.tls = false;

      session.transport = transport;
session.userName = @"***";
session.password = @"***";
session.protocolLevel = 4;
session.clientId =@"hi";
session.cleanSessionFlag = true;
session.willQoS = 0;
session.willMsg = nil;
session.willTopic = @"topic";

[session connectWithConnectHandler:^(NSError *error) {
    if (error) {
        NSLog(@"Subscription failed %@", error.localizedDescription);
    } else {
        NSLog(@"Subscription sucessfull! Granted Qos: %@", error);
    }
}];

[session subscribeToTopic:@"topic" atLevel:MQTTQosLevelExactlyOnce subscribeHandler:^(NSError *error, NSArray<NSNumber *> *gQoss) {
    NSLog(@"Subscription sucessfull! Granted Qos: %@", gQoss);
    if (error) {
        NSLog(@"Subscription failed %@", error.localizedDescription);
    } else {
        NSLog(@"Subscription sucessfull! Granted Qos: %@", gQoss);
    }
}];



NSData *dataSam = [@"hi All" dataUsingEncoding:NSUTF8StringEncoding];
[session publishData:dataSam onTopic:@"topic" retain:FALSE qos:MQTTQosLevelAtMostOnce publishHandler:^(NSError *error) {
    if (error) {
        NSLog(@"Subscription failed %@", error.localizedDescription);
    } else {
        NSLog(@"Subscription sucessfull! ");
    }
}];

ankitsamal avatar Jun 12 '18 14:06 ankitsamal

why do you use MQTTWebsocketTransport? For plain MQTT you should use MQTTCFSocketTransport when you say it is mqtt+ssl, why do you specify transport.tls = false? I suggest to set transport.tls = true why do you have willMsg = nil when you have willTopic = @"..." ? I suggest to set willTopic = nil too

ckrey avatar Jun 13 '18 16:06 ckrey

New code: MQTTCFSocketTransport transport = [[MQTTCFSocketTransport alloc] init]; transport.host = @"********************.mq.us-east-1.amazonaws.com"; transport.port = 8883; transport.tls = TRUE;

MQTTSession *session = [[MQTTSession alloc] init];
session.transport = transport;
session.userName = @"*********";
session.password = @"******";
session.protocolLevel = 4;
session.clientId =@"hi";
session.cleanSessionFlag = true;
session.willQoS = 0;
session.willMsg = nil;
session.willTopic = nil;

[session connectWithConnectHandler:^(NSError *error) {
    NSLog(@"Subscription sucessfull! ");
}];

[session subscribeToTopic:@"example/1" atLevel:MQTTQosLevelExactlyOnce subscribeHandler:^(NSError *error, NSArray<NSNumber *> *gQoss) {
    if (error) {
        NSLog(@"Subscription failed %@", error.localizedDescription);
    } else {
        NSLog(@"Subscription sucessfull! Granted Qos: %@", gQoss);
    }
}];

NSData *dataSam = [@"hi kukuta" dataUsingEncoding:NSUTF8StringEncoding];
[session publishData:dataSam onTopic:@"topic" retain:FALSE qos:MQTTQosLevelAtMostOnce publishHandler:^(NSError *error) {
    if (error) {
        NSLog(@"Subscription failed %@", error.localizedDescription);
    } else {
        NSLog(@"Subscription sucessfull! ");
    }
}];

I made the changes. I get encoder . not ready error. this is the trace:

2018-06-13 14:03:18.567799-0400 try1Mqtt[796:250223] [MQTTSession] init 2018-06-13 14:03:18.569174-0400 try1Mqtt[796:250223] [MQTTSession] connectWithConnectHandler:0x100500468 2018-06-13 14:03:19.501183-0400 try1Mqtt[796:250223] [MQTTSession] connecting 2018-06-13 14:03:19.501393-0400 try1Mqtt[796:250223] [MQTTCoreDataPersistence] deleteAllFlowsForClientId hi 2018-06-13 14:03:19.535064-0400 try1Mqtt[796:250223] [MQTTPersistence] Persistent store: /var/mobile/Containers/Data/Application/CEC70462-8D82-438A-A210-3A81F0FDEDB4/Documents/MQTTClient 2018-06-13 14:03:19.540385-0400 try1Mqtt[796:250223] [MQTTCFSocketTransport] open 2018-06-13 14:03:19.543217-0400 try1Mqtt[796:250223] [MQTTCFSocketEncoder] setState 0/0 2018-06-13 14:03:21.322978-0400 try1Mqtt[796:250223] [MQTTSession] subscribeToTopics:{ "example/1" = 2; }] 2018-06-13 14:03:21.323140-0400 try1Mqtt[796:250223] nextMsgId synchronizing 2018-06-13 14:03:21.323211-0400 try1Mqtt[796:250223] nextMsgId synchronized 2018-06-13 14:03:21.323263-0400 try1Mqtt[796:250223] flowforClientId requestingPerform 2018-06-13 14:03:21.323314-0400 try1Mqtt[796:250223] flowforClientId performing 2018-06-13 14:03:21.323678-0400 try1Mqtt[796:250223] flowforClientId performed 2018-06-13 14:03:21.323730-0400 try1Mqtt[796:250223] nextMsgId synchronized done 2018-06-13 14:03:21.324446-0400 try1Mqtt[796:250223] [MQTTMessage] wireFormat(16)=<820e0002 00096578 616d706c 652f3102>... 2018-06-13 14:03:21.324551-0400 try1Mqtt[796:250223] [MQTTSession] mqttTransport send 2018-06-13 14:03:21.324607-0400 try1Mqtt[796:250223] [MQTTCFSocketEncoder] not MQTTCFSocketEncoderStateReady 2018-06-13 14:03:22.784759-0400 try1Mqtt[796:250223] [MQTTSession] publishData:<6869206b 756b7574 61>... onTopic:topic retain:0 qos:0 publishHandler:0x1005004e8 2018-06-13 14:03:25.253112-0400 try1Mqtt[796:250223] [MQTTMessage] wireFormat(18)=<30100005 746f7069 63686920 6b756b75 7461>... 2018-06-13 14:03:25.253263-0400 try1Mqtt[796:250223] [MQTTSession] mqttTransport send 2018-06-13 14:03:25.253336-0400 try1Mqtt[796:250223] [MQTTCFSocketEncoder] not MQTTCFSocketEncoderStateReady 2018-06-13 14:03:25.254219-0400 try1Mqtt[796:250309] Subscription failed Encoder not ready 2018-06-13 14:03:28.591796-0400 try1Mqtt[796:250223] [MQTTCFSocketTransport] close

ankitsamal avatar Jun 13 '18 18:06 ankitsamal