Massimo Chiappi
Massimo Chiappi

Reputation: 1

mqtt suscribe with IBM Watson Iot

My problem is the following: I have to receive from mqtt with IBM Watson Iot a message with a subscribe function but in the message variable hasn't set the value that would be set with a callback function onArrivedMessage. What can I do to fix the problem? This is my code in javascript:

   function connect() {
          var hostname = [...omissis...];
          var port = useSSL ? mqttPortSecure : mqttPort;
          var clientId = [...omissis...];
          var lastWillTopic = topiqReq;
          var lastWillMessageVal = "";
          var lastWillQos = 0;
          var lastWillRetain = false;
          password = [...omissis...];

          client = new Paho.MQTT.Client(hostname, port, clientId);

          console.log("Connecting to Server: [Host: ", hostname, ", Port: ", port, ", Path: ", client.path, ", ID: ", clientId, "]");

          // set callback handlers
          client.onConnectionLost = onConnectionLost;
          client.onMessageArrived = onMessageArrived;

          var options = {
            invocationContext: { host: hostname, port: port, path: client.path, clientId: clientId },
            timeout: 100,
            keepAliveInterval: 100,
            cleanSession: true,
                        password: password,
            useSSL: useSSL,
            onSuccess: onConnectSuccess,
            onFailure: onConnectFailure
          };

          
          if (lastWillTopic.length > 0) {
            var lastWillMessage = new Paho.MQTT.Message(lastWillMessageVal);
            lastWillMessage.destinationName = lastWillTopic;
            lastWillMessage.qos = lastWillQos;
            lastWillMessage.retained = lastWillRetain;
            options.willMessage = lastWillMessage;
          }

          // connect the client
          client.connect(options);
          changeConnectionStatusImage("../src_mqtt/public/images/connecting.svg");
              document.getElementById("connection").innerHTML = "Connecting";
              console.log("Connecting device to IoT Foundation...");
        }

        connect();
}

function onConnectSuccess(){
    // The device connected successfully
    console.log("Connected Successfully!");
    isConnected = true;
    changeConnectionStatusImage("../src_mqtt/public/images/connected.svg");
    document.getElementById("connection").innerHTML = "Connected";
subscribe();
}

function subscribe() {
  var topic = topicReq;
  var qos = "0";
  console.log("INFO", "Subscribing to: [Topic: ", topic, ", QoS: ", qos, "]");
  client.subscribe(topic, { qos: Number(qos) });
}

// called when a message arrives
function onMessageArrived(message) {
console.log("onMessageArrived:"+message.payloadString);
client.disconnect();
}

Upvotes: 0

Views: 87

Answers (0)

Related Questions