Невозможно подключиться из нативного приложения через mqtt к брокеру, работающему на localhost - PullRequest
0 голосов
/ 27 октября 2019

У меня есть следующая проблема:

Я создал брокер mqtt на моем сервере localhost, это код:

const settings = {
  port: 1883
};

const server = new mosca.Server(settings);
let client

server.on("ready", function() {
  console.log("Mosca server is running on port 1883");
  client = mqtt.connect("mqtt://localhost:1883");
  client.on("connect", function() {
    client.subscribe("locateUser");
  });
  client.on("message", function(topic, message) {
    context = message.toString();
    console.log(context);
  });
});

Когда я пытаюсь подключиться к брокеру с localhost всеработает правильно и сообщения отправляются. Но я хотел бы подключиться к брокеру из собственного приложения, и соединение не может быть установлено. Это код для подключения:

mqtt
      .createClient({
        uri: "mqtt://XXX.XXX.X.XX:1883"
      })
      .then(client => {
        console.log(client);
        this.client = client;
        client.on("closed", function() {
          console.log("mqtt.event.closed");
        });
        client.on("error", function(msg) {
          console.log("mqtt.event.error", msg);
        });
        client.on("message", function(msg) {
          console.log("mqtt.event.message", msg);
        });

        client.on("connect", function() {
          console.log("connected");
          client.subscribe("/data", 0);
          client.publish("/data", "test", 0, false);
        });

        client.connect();
      })
      .catch(function(err) {
        console.log(err, 60);
      });

Я получаю сообщение об ошибке:

[TypeError: null is not an object (evaluating 'matches[2]')] 60

Во-первых, у меня проблема с неправильным IP-адресом локальной сети или чем-то в этом роде. Но у меня есть maid express сервер api rest и протестировано соединение с rest api - он работает правильно, и я вижу объект, отправленный мне из запроса get. У вас есть идеи, почему он не работает?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...