title: Is it possible to connect to the Google IOTCore MQTT Bridge via Javascript?
body: <p>I've been trying to use the javacscript version of the Eclipse Paho MQTT client to access the Google IOTCore MQTT Bridge, as suggested here:</p>
  
  <p><a href="https://cloud.google.com/iot/docs/how-tos/mqtt-bridge" rel="nofollow noreferrer">https://cloud.google.com/iot/docs/how-tos/mqtt-bridge</a></p>
  
  <p>However, whatever I do, any attempt to connect with known good credentials (working with other clients) results in this connection error:</p>
  
  <pre><code>errorCode: 7, errorMessage: "AMQJS0007E Socket error:undefined."
  </code></pre>
  
  <p>Not much to go on there, so I'm wondering if anyone has ever been successful connecting to the MQTT Bridge via Javascript with Eclipse Paho, the client implementation suggested by Google in their documentation. </p>
  
  <p>I've gone through their troubleshooting steps, and things seem to be on the up and up, so no help there either. </p>
  
  <p><a href="https://cloud.google.com/iot/docs/troubleshooting" rel="nofollow noreferrer">https://cloud.google.com/iot/docs/troubleshooting</a></p>
  
  <p>I have noticed that in their docs they have sample code for Java/Python, etc, but not Javascript, so I'm wondering if it's simply not supported and their documentation just fails to mention as such. </p>
  
  <p>I've simplified my code to just use the 'Hello World' example in the Paho documentation, and as far as I can tell I've done things correctly (including using my device path as the ClientID, the JWT token as the password, specifying an 'unused' userName field and explicitly requiring MQTT v3.1.1). </p>
  
  <p>In the meantime I'm falling back to polling via their HTTP bridge, but that has obvious latency and network traffic shortcomings. </p>
  
  <pre><code>// Create a client instance
  client = new Paho.MQTT.Client("mqtt.googleapis.com", Number(8883), "projects/[my-project-id]/locations/us-central1/registries/[my registry name]/devices/[my device id]");
  
  // set callback handlers
  client.onConnectionLost = onConnectionLost;
  client.onMessageArrived = onMessageArrived;
  
  // connect the client
  client.connect({
      mqttVersion: 4,   // maps to MQTT V3.1.1, required by IOTCore
      onSuccess:onConnect,
      onFailure: onFailure,
      userName: 'unused',  // suggested by Google for this field
      password: '[My Confirmed Working JWT Token]' // working JWT token
  
  function onFailure(resp) {
      console.log(resp);
  }
  
  
  // called when the client connects
  function onConnect() {
    // Once a connection has been made, make a subscription and send a message.
    console.log("onConnect");
    client.subscribe("World");
    message = new Paho.MQTT.Message("Hello");
    message.destinationName = "World";
    client.send(message);
  }
  
  // called when the client loses its connection
  function onConnectionLost(responseObject) {
    if (responseObject.errorCode !== 0) {
      console.log("onConnectionLost:"+responseObject.errorMessage);
    }
  }
  
  // called when a message arrives
  function onMessageArrived(message) {
    console.log("onMessageArrived:"+message.payloadString);
  }
  </code></pre>