В клиенте MQTT Uncaught ReferenceError: обмен сообщениями не определен

Я пробую простой клиент MQTT на основе веб-сокета и получаю ошибку «Uncaught ReferenceError: Messaging is notdefined» на консоли Chrome.

<!DOCTYPE html>
<head>

  <head>
  <script src="mqttws31.js" type="text/javascript" charset="utf-8" async defer></script>


  <script type="text/javascript">

  var client;
  var form = document.getElementById("tutorial");

  function doConnect() {
        var wsbroker = "test.mosquitto.org";  //mqtt websocket enabled broker
    var wsport = 80 // port for above

    var client = new Messaging.Client(wsbroker, wsport,
        "myclientid_" + parseInt(Math.random() * 100, 10));
      client.onConnect = onConnect;
      client.onMessageArrived = onMessageArrived;
      client.onConnectionLost = onConnectionLost;
      client.connect({onSuccess:onConnect});
  }

  function doSubscribe() {
      client.subscribe("/World");
  }

  function doSend() {
      message = new Messaging.Message("Hello");
      message.destinationName = "/World";
      client.send(message);
  }

  function doDisconnect() {
      client.disconnect();
  }

  // Web Messaging API callbacks

  function onConnect() {
      var form = document.getElementById("example");
      form.connected.checked= true;
  }

  function onConnectionLost(responseObject) {
      var form = document.getElementById("example");
      form.connected.checked= false;
      if (responseObject.errorCode !== 0)
          alert(client.clientId+"\n"+responseObject.errorCode);
  }

  function onMessageArrived(message) {
      var form = document.getElementById("example");
      form.receiveMsg.value = message.payloadString;
  }

  </script>
</head> 

<body>
  <h1>Example Web Messaging web page.</h1>
  <form id="example">
  <fieldset>
  <legend id="Connect" > Connect </legend>
    Make a connection to the server, and set up a call back used if a 
    message arrives for this client.
    <br>
    <input type="button" value="Connect" onClick="doConnect(this.form)" name="Connect"/>
    <input type="checkbox" name="connected" disabled="disabled"/>
  </fieldset>

  <fieldset>
  <legend id="Subscribe" > Subscribe </legend>
  Make a subscription to topic "/World".
  <br> <input type="button" value="Subscribe" onClick="doSubscribe(this.form)"/>
  </fieldset>

  <fieldset>
  <legend id="Send" > Send </legend>
    Create a Message object containing the word "Hello" and then publish it at
    the server.
    <br>
    <input type="button" value="Send" onClick="doSend(this.form)"/>
  </fieldset>

  <fieldset>
  <legend id="Receive" > Receive </legend>
    A copy of the published Message is received in the callback we created earlier.
  <textarea name="receiveMsg" rows="1" cols="40" disabled="disabled"></textarea>
  </fieldset>

  <fieldset>
  <legend id="Disconnect" > Disconnect </legend>
    Now disconnect this client from the server.
  <br> <input type="button" value="Disconnect" onClick="doDisconnect()"/>
  </fieldset>
  </form>
</body>
</html -->

ОШИБКА в строке "var client = new Messaging.Client(wsbroker, wsport,"

Ошибка ОС «Uncaught ReferenceError: обмен сообщениями не определен»

Сценарий Java взят из http://git.eclipse.org/c/paho/org.eclipse.paho.mqtt.javascript.git/tree/src/mqttws31.js

Пожалуйста, предложите любое решение...


person Amir Ashfaq    schedule 02.01.2015    source источник
comment
Попробуйте удалить теги асинхронной отсрочки из первого тега скрипта.   -  person hardillb    schedule 02.01.2015
comment
Все тот же... @hardillb   -  person Amir Ashfaq    schedule 02.01.2015


Ответы (2)


Вы используете старый пример, имя пакета изменилось, оно больше не является обменом сообщениями, оно должно быть:

...
var client = new Paho.MQTT.Client(wsbroker, wsport,
    "myclientid_" + parseInt(Math.random() * 100, 10));
...

РЕДАКТИРОВАТЬ: Также номер порта для test.mosquitto.org равен 8080, а не 80.

person hardillb    schedule 02.01.2015

Я искал пример и пробовал приведенный выше код с предложенными изменениями, но он все равно не удался... (возможно, mqttws31.js изменился), но я получил рабочий пример из здесь, который отлично работает, когда вы меняете порт на 8080!

-Надеюсь, это кому-нибудь поможет!

<!DOCTYPE html>
<html>
  <head>
  <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
  <script src="js/mqttws31.js" type="text/javascript"></script>
  <script type="text/javascript">
    //sample HTML/JS script that will publish/subscribe to topics in the Google Chrome Console
    //by Matthew Bordignon @bordignon on twitter.
    var wsbroker = "test.mosquitto.org";  //mqtt websocket enabled brokers
    var wsport = 8080 // port for above
    var client = new Paho.MQTT.Client(wsbroker, wsport,
        "myclientid_" + parseInt(Math.random() * 100, 10));
    client.onConnectionLost = function (responseObject) {
      console.log("connection lost: " + responseObject.errorMessage);
    };
    client.onMessageArrived = function (message) {
      console.log(message.destinationName, ' -- ', message.payloadString);
    };
    var options = {
      timeout: 3,
      onSuccess: function () {
        console.log("mqtt connected");
        // Connection succeeded; subscribe to our topic, you can add multile lines of these
        client.subscribe('/World', {qos: 1});

        //use the below if you want to publish to a topic on connect
        message = new Paho.MQTT.Message("Hello");
        message.destinationName = "/World";
        client.send(message);

      },
      onFailure: function (message) {
        console.log("Connection failed: " + message.errorMessage);
      }
    };
  function init() {
      client.connect(options);
  }
    </script>
  </head>
  <body onload="init();">
  </body>

</html>
person Peter Piper    schedule 21.08.2015