Не удается применить подстановочный знак при подписке на тему с версией javascript paho mqtt - PullRequest
0 голосов
/ 22 октября 2018

Первое тестирование библиотеки JavaScript MQTT Paho, и следующий код является примером по умолчанию, представленным в документации.Как только я пытаюсь использовать подстановочный знак «#» для подписки на тему (например, «hermes / #»), я получаю эту ошибку:

onConnectionLost: AMQJS0005E Внутренняя ошибка.Сообщение об ошибке: AMQJS0009E Неверные данные UTF: 80 -42., Трассировка стека: Ошибка: AMQJS0009E Неверные данные UTF: 80 -42.

Документация действительно краткая и в любом случае ничего не упоминает о подстановочных знаках, это отсутствует функция в библиотеке JS или есть другой способ?

    <!DOCTYPE html>
<html>
  <head>
  <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
  <script src="paho-mqtt.js" type="text/javascript"></script>
  <script type="text/javascript">

        var mqtt;
        var reconnectTimeout = 2000;
        var host="mywairaspi.local"; //change this
        var port= 8080;

// Create a client instance
client =  new Paho.MQTT.Client(host,port,'60');

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

// connect the client
client.connect({onSuccess:onConnect});

// 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");
  client.subscribe('hermes/#');
  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);
}
</script>

  </head>
  <body>
  </body>

</html>

1 Ответ

0 голосов
/ 30 ноября 2018

Я полагаю, вы видите ошибку в клиенте PAHO, поскольку подстановочные знаки, безусловно, поддерживаются.По состоянию на ноябрь 2018 года, если какое-либо из полученных сообщений является необработанными двоичными данными (или просто не проанализировано как действительный UTF), то это выдает ошибку «Malformed UTF data».

Был добавлен pull-запрос на github, который исправил его для меня, и, надеюсь, он скоро будет объединен с выпуском: https://github.com/eclipse/paho.mqtt.javascript/pull/178

...